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

Изтрито е съдържание Добавено е съдържание
Tir256 (беседа | приноси)
Tir256 (беседа | приноси)
Ред 37:
 
=== Локални и вмъкнати ===
 
При някои езици, класовете могат да се декларират в друг обхват (scope) освен в глобалния. Има много видове такива класове.
 
<b>Вътрешен/вмъкнат</b> (inner) клас е такъв, който се дефинира в друг клас. Взаимовръзката между вътрешния клас и този, който го обгръща може да се разглежда като друг тип класова свързване. Вътрешния клас обикновено не е нито асоцииран с инстанциите на обгръщащия клас, нито е инстанцииран заедно с него. В зависимост от езика е възможно или не да се извиква вътрешния клас от място извън обгръщащия. Сходна коценпция притежават и вътрешните типове (inner types), също известни като вътрешни типове данни или вложени типове, което е генерализация на концепцията за вътрешни класове. C++ е пример за език, който поддържа и вътрешни класове, и вътрешни типове (чрез typedef декларацията).
 
Друг тип е локалния клас, който е клас дефиниран вътре в процедура или функция. Това ограничава достъпа до името на класа само в обхвата където класа е зададен. В зависимост от семантичните правила на езика, може да има допълнителни ограничения на локалните класове в сравнение с не локалните такива. Една често срещано ограничение е забраната на локалните класове да достъпват локалните променливи на обгръщащата ги функция. Например в C++, локален клас може да се обръща към статични променливи декларирани в обгръщащата функция, но не може да достъпва останлите променливи на функцията.
 
=== Метаклас ===
=== Ненаследими ===