Клас (програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
Hiksa (беседа | приноси)
Hiksa (беседа | приноси)
Ред 17:
 
=== Йерархична ===
Класове могат да произлизат от един или повече вече съществуващи класове, формирайки по този начин йерархична взаимовръзка между първоизточниците (базови класове, бащини класове или супер-класове) и произлизащите класове (наследствени класове, суб-класове). Взаимовръзката между наследственият клас и базовият клас е широко известна, като „е“ връзка. Например, клас „Бутон“ може да произлиза от клас „Контрола“. Следователно, всеки Бутон е Контрола. Структурните и поведенчески членове на бащиният клас се онаследяват от наследственият клас. Наследствените класове могат да имат в себе си дефинирани допълнителни структурни членове (полета данни) и/или поведенчески членове (методи), в допълнение към наследените такива. Също така в някои езици за програмиране е позволено, суб-класовете да отменят и/или предефинират наследени методи.
Не всички езици позволяват множествено наследяване. Например Java позволява даден клас да имплементира множество интерфейси, но да наследява от само един клас. В случай, че множественото наследяване е позволено, йерархията е тип насочен ацикличен граф (или НАГ за по-кратко), в противен случай е тип дърво. В йерархията класовете играят ролята на възли, а унаследяванията – на връзки. Нивата на тази йерархия се наричат слоеве или слоеве на абстракция (нива на абстракция).
 
=== Наследственост ===
Въпреки че клас-ориентираните езици са често приемани, че поддържат наследяване, то не е присъща част от концепцията за класове. Някой езици, често сочени като [[обектно-ориентирани езици|„обектно-ориентирани езици“]], поддържат класове, но не поддържат наследяване. Примери за обектно-ориентирани езици включват по-ранните версии на [[Visual Basic|Visual Basic]].