Наследование (программирование): различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
мНет описания правки
м оформление
Строка 22:
== Наследование в языке C++ ==
«Наследование» в [[Си плюс плюс|C++]]:
<source lang="cpp">
class A{ //базовый класс
};
class B : public A{ //public наследование
}
class C : protected A{ //protected наследование
}
class Z : private A{ //private наследование
}
</source>
 
В C++ существует три типа наследования: '''public''', '''protected''', '''private'''. Спецификаторы доступа членов базового класса меняются в потомках следующим образом:
Строка 40 ⟶ 42 :
 
Одним из основных преимуществ public-наследования является то, что указатель на классы—наследники может быть неявно преобразован в указатель на базовый класс, то есть для примера выше можно написать:
<source lang="cpp">A* a = new B;</source>
Эта интересная особенность открывает возможность [[динамическая идентификация типа|динамической идентификации типа]] (RTTI).
 
Строка 49 ⟶ 51 :
Предок:
 
<source lang="delphi">
TAncestor = '''class'''
'''private'''
'''protected'''
'''public'''
//Виртуальная процедура.
'''procedure''' VirtualProcedure'''; virtual; abstract;'''
'''procedure''' StaticProcedure''';'''
'''end;'''
</source>
 
Наследник:
 
<source lang="delphi">
TDescendant = '''class'''(TAncestor)
'''private'''
'''protected'''
'''public'''
//Перекрытие виртуальной процедуры.
'''procedure''' VirtualProcedure; '''override;'''
'''procedure''' StaticProcedureVirtualProcedure; override;
procedure StaticProcedure;
'''end;'''
end;
</source>
 
Абсолютно все [[класс (программирование)|классы]] в [[Delphi]] являются потомками класса <code>[[TObject]]</code>. Если класс-предок не указан, то подразумевается, что новый класс является прямым потомком класса <code>TObject</code>.