Наследяването (програмиране)

От Seo Wiki - оптимизация за търсачки и програмните езици

Наследствено - (., Заедно с капсулиране и полиморфизъм на абстракция) една от четирите най-важните обектно-ориентирана механизми на програмиране, което позволява да се опише нов клас, въз основа на съществуващата (изходен) и свойствата и функционалност на родителския клас назаем нов клас.

С други думи, получени клас изпълнява спецификацията на съществуваща клас (базовия клас). Това позволява да се справят с получени клас обекти по същия начин като обекти база класа [1].

видове наследството

прост наследство

Клас. от които има наследство, наречена база или родител (Eng. база клас). Класове, които са настъпили от основата, наречени потомци. (получен клас Engl.). приемници или производни класове

Някои езици използват абстрактни класове. Абстрактен клас - клас, който съдържа най-малко един абстрактен метод. по който е описано в програмата, тя има поле. техники и не могат да бъдат използвани за създаване на пряко обекта. Това означава, че от абстрактен клас може да наследи само. Обектите се създават само въз основа на извлечения клас наследи от резюмето. Например, абстрактен клас може да бъде база клас "университет служител", които са наследени класове "студент", "професор" и т. D. Тъй като производните класове имат общи области и функции (например, "дата на раждане" полеви), тези членове на класа могат да бъдат описани в базовия клас. Програма обекти са създадени на базата на "дипломант" класове ", професорът," но това няма смисъл да се създаде обект на базата на класа "служител на университета."

множествено наследяване

Когато множествено наследяване между класовете може да бъде повече от един родител. В този случай, класът наследява всички методи на предците си. Предимствата на този подход за по-голяма гъвкавост. Множествена наследство се осъществява в C ++. От други езици, предвижда тази възможност, може да се отбележи, Python и Айфеловата. Множествено наследяване се поддържа в езика на UML.

Множествено наследяване - потенциален източник на грешки, които могат да се дължат на наличието на същите имена метод в предците. В езици, които се позиционират като наследниците на C ++ (Java. C # и т.н.), множествена наследство е изоставено в полза на интерфейсите. Почти винаги е възможно да се избегне използването на този механизъм. Въпреки това, ако е необходимо, е все още там, а след това, за решаване на конфликти, наследени методи използват едно и също име, може, например, да се прилагат на удължаването на експлоатацията поглед - "::" - да се обадя по специфичен метод на даден родител.

Опитвайки се да реши проблема с със същото име в предците на методи е направен на езика на Айфел. в която описанието на новата класа, трябва да бъдат внесени изрично посочва членовете на всяка от извлечения клас и тяхното именуване в новия клас.

Повечето съвременни обектно-ориентирани езици за програмиране (C #. Java. Delphi и др.), Поддържа и двата наследени от клас предшественик и прилагат методи за множество интерфейси в един и същи клас. Този механизъм позволява да голяма степен да замени множествено наследяване - методите на интерфейси, необходими за да се предефинират ясно, че елиминира грешките при наследяване функционалност еднакви методи на различните класове предци.

Единична база клас

В някои езици за програмиране, всички класове явно или неявно наследяват от някакъв базов клас. Smalltalk беше един от първите, които използват езика на тази концепция. Тези езици включват Java (Object), C # (System.Object), Delphi (TObject).

Наследяване на C ++

В C ++, има три вида наследяване: публични. защитени. частни. членове Проектантите достъп база класа не са променени в поколението, както следва:

  • докато публично-наследството на всички квалификанти остане непроменена.
  • с защитен-наследяване на всички квалификации остават непроменени, с изключение на обществеността квалификатор, която варира от спецификаторът защитен (т.е. общите членове на базовия клас в поколението са защитени).
  • когато частното наследство на всички класиралите се променят към частна.

Едно от основните предимства на публично-наследство е, че указател към подклас може да бъде безусловно превръща в указател към базов клас, това е, за примера по-горе, можете да напишете:

Това е една страхотна възможност се отваря възможност за идентификация на динамичен тип (RTTI).

Наследяването на езика Delphi (Object Pascal)