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

Изтрито е съдържание Добавено е съдържание
Tir256 (беседа | приноси)
Tir256 (беседа | приноси)
Ред 29:
=== Абстрактни и конкретни ===
В език, който поддържа нследяването, абстрактен клас или абстрактен основен клас, е клас който не може да бъде наследен, защото е или осначен като абстрактен или просто използва абстрактни методи (виртуални методи). Абстрактните класове задават виртуални класове посредством сигнатурата, която ще се имплементира от директните или индиректните наследници на абстрактния клас. Преди наследяването на клас от абстрактен такъв, всички абстрактни методи на класовете реодители трябва да бъдат имплементирани от някакъв друг клас във веригата на наследяване.
 
Повечето обектно ориентирани езици за програмиране позволяват на програмистите да уточняват кои класове се смятат за абстрактни и няма да позволят на такива да бъдат инстанцирани. Например в Java и PHP, ключовата дума abstract (абстрактен) се използва. В C++, абстрактен клас е такъв имащ поне един абстрактен метод зададен чрез съответния синтаксис в езика (чиста виртуална функция в C++ езика).
 
Клас състоящ се само от виртуални методи се нарича Чисто Абстрактен Основен Клас (Pure ABC) в C++ и също е известен като интерфейс от потребителите на езика. Други езици, особено Java и C#, поддържат вариант на абстрактни класове, наричани interface (интерфейс) чрез ключовата дума в езика. В тези езици множественото наследяване не е разрешено, но класа може да имплементира много интерфейси. Такъв клас може само да съдържа публично достъпни методи.
 
Конкретния клас (concrete class) е такъв, който може да се инстанцира, противоположно на абстрактните класове, които не могат.