Inheritance and Polymorphism Flashcards
1
Q
What is Inheritance?
A
- ООП принцип
- позволява създаването на ясна йерархия
- наследява състоянието и поведението на родителския клас
- наследниците могат да разширяват и изменят състоянието и поведението на родителския клас
- “IS-A” отношения м/у родителя и наследника (напр. презозно средство и кола/самолет/влак)
2
Q
What are the limitations of inheritance?
A
- може да се наследи само един родителски клас (диамантен проблем)
- tight coupling - подкласовете са тясно свързани с базовия клас, което прави промените по базовия клас по-трудни и рискови
- сложност - много нива на наследяване могат да доведат до трудно разчитане на код и по-трудна поддръжка
3
Q
What is a superclass?
A
Това е родителски клас, който задава общо състояние и поведение, което може да бъде разширено от наследниците.
4
Q
What is a subclass?
A
Това е клас, който наследява общото състояние и поведение от родителския клас.
5
Q
What is polymorphism?
A
- ООП принцип
- дава възможност за създаване на много различни форми
- референтния тип и типа на обекта могат да бъдат различни
- наследниците могат да override-нат някои методи от родителя
- класът може да бъде използван през базовия клас или интерфейс
- позволява обектите от различни класове да бъдат третирани като обекти от общ клас (напр. цвете, дърво и храст са растения)
- наследикът следва същия contract, но може да има различно поведение
6
Q
What is static polymorphism?
A
- method overloading (Compile-time)
7
Q
What is dynamic polymorphism?
A
- method overriding (Run-time)
8
Q
What is method overloading?
A
- методно препълване, което позволява създаването на методи с едно и също име, но различно поведение на база различни параметри и return тип
- методите трябва да бъдат в един и същ клас
9
Q
What is method overriding?
A
- предоставя различна/специфична имплементация на метод от родителския клас
- осъщестява се в класовете наследници