среда, 25 июля 2007 г.

X++: наследование 1

[id:029]

Наследовать класс можно только от одного класса.

Создаем класс BLG29_ClassBase с конструктором: class BLG29_ClassBase { int iMyVar; void new() { iMyVar = 123; print 'constructor of base class'; } }

Создаем дочерний класс BLG29_ClassChild, туда же помести метод main(). Внимание на слово "extends": class BLG29_ClassChild extends BLG29_ClassBase { // конструктор класса void new() { super(); print 'constructor of inherited class'; } int getMyVar() { return iMyVar; } static void main(Args _args) { BLG29_ClassChild cls; cls = new BLG29_ClassChild(); print cls.getMyVar(); pause; } }

У меня появилось: Результат. Родительский класс тоже отработал

Слово "super" в конструкторе класса BLG29_ClassChild вызывает конструктор родительского класса BLG29_ClassBase.
Конструктор класса BLG29_ClassBase не запускается автоматически, попробуй закомментировать строку с вызовом super() в конструкторе класса BLG29_ClassChild.
Получишь: Результат отключения вызова родительского конструктора

Итог
  • наследование задается с помощью слова «extends»;
  • наследовать можно только от одного класса;
  • модификаторы доступа (public, protected, private) при наследовании не задаются (как в .NET);
  • доступ к перегруженным методам базового класса из дочернего — через волшебное слово "super";

Комментариев нет: