Разлика между наследството и съхранението

Наследяване срещу Контейнерство

Наследяването и съдържанието са две важни концепции, открити в OOP (Примерно обектно ориентирано програмиране: C ++). Казано по-просто, и Containership, and Inheritance се занимават с предоставяне на допълнителни свойства или поведение на клас. Наследяването е способността на клас да наследява свойства и поведение от родителски клас, като го разширява. От друга страна, Containership е способността на клас да съдържа обекти от различни класове като данни за членове.

Какво е наследяване?

Както бе споменато по-горе, Наследяването е способността на клас да наследява свойства и поведение от родителски клас, като го разширява. Наследяването по същество осигурява повторно използване на код, като позволява разширяване на свойствата и поведението на съществуващ клас от новоопределен клас. Ако клас A разширява B, тогава клас B се нарича родителски клас (или суперклас), а клас A се нарича дъщерния клас (или производен клас / подклас). В този примерен сценарий клас A ще наследи всички публични и защитени атрибути и методи на суперкласа (B). Подкласът може по избор да отмени (предоставя нова или разширена функционалност на методите) поведението, наследено от родителския клас. Наследяването представлява връзка „е-а“ в OOP. Това по същество означава, че A също е B. С други думи, B може да бъде класът с общо описание на определена цялост в реалния свят, но А посочва определена специализация. При проблем в реалния свят, класа Person може да бъде разширен, за да създаде класа Служител. Това се нарича специализация. Но бихте могли също така първо да създадете класа Employee и след това да го генерализирате до клас Person (т.е. генерализация). В този пример, Служителят ще има всички свойства и поведение на Лицето (т.е. Служителят също е лице) и може да съдържа някаква допълнителна функционалност (така че Лицето не е служител) също.

Какво е Контейнерството?

Containership е способността на клас да съдържа обекти от различни класове като данни за членове. Например клас A може да съдържа обект от клас В като член. Тук всички публични методи (или функции), дефинирани в B, могат да бъдат изпълнени в клас А. Клас A се превръща в контейнер, докато клас B се превръща в съдържащ клас. Контейнерството се нарича също Състав. В този пример може да се каже, че клас А е съставен от клас Б. В OOP, Containership представлява връзка "има-а". Важно е да се отбележи, че въпреки че контейнерът има достъп за изпълнение на всички публични методи от съдържащия се клас, той не е в състояние да променя или предоставя допълнителна функционалност. Когато става въпрос за проблем с програмирането в реалния свят, обект от клас TextBox може да се съдържа във класовата форма и по този начин може да се каже, че формуляр съдържа TextBox (или алтернативно, формулярът е съставен от TextBox).

Разлика между наследството и съхранението

Въпреки че наследяването и съдържанието са две концепции за OOP, те са доста различни в това, което позволяват на програмиста да постигне. Наследяването е способността на клас да наследява свойства и поведение от родителски клас, като го разширява, докато Containership е способността на клас да съдържа обекти от различни класове като данни за членове. Ако клас е разширен, той наследява всички обществени и защитени свойства / поведение и тези поведения могат да бъдат отменени от подклас. Но ако клас се съдържа в друг, контейнерът не получава способността да променя или добавя поведение към съдържащия се. Наследяването представлява връзка "е-а" в OOP, докато Containership представлява "има-a" връзка.