Книга: Описание языка PascalABC.NET
Переопределение методов
Переопределение методов
Метод базового класса может быть переопределен (замещен) в подклассах. Если при этом требуется вызвать метод базового класса, то используется служебное слово inherited (англ.- унаследованный). Например:
type
Person = class
private
name: string;
age: integer;
public
constructor Create(nm: string; ag: integer);
begin
name := nm;
age := ag;
end;
procedure Print;
begin
writeln('Имя: ',name,' Возраст: ',age);
end;
end;
Student = class(Person)
private
course, group: integer;
public
constructor Create(nm: string; ag,c,gr: integer);
begin
inherited Create(nm,ag);
course := c;
group := gr;
end;
procedure Print;
begin
inherited Print;
writeln('Курс: ',course,' Группа: ',group);
end;
end;
Здесь метод Print производного класса Student вызывает вначале метод Print, унаследованный от базового класса Person, с помощью конструкции inherited Print. Аналогично конструктор Create класса Student вызывает вначале конструктор Create базового класса Person, также используя служебное слово inherited.
Правила наследования конструкторов рассматриваются здесь.
Следует обратить внимание, что конструктор базового класса вызывается в этом случае как процедура, а не как функция, при этом создания нового объекта не происходит.
Если в методе вызывается метод базового класса с теми же параметрами, то можно использовать запись inherited, не указывая имя метода и параметры. Например, метод Student.Print можно записать таким образом:
procedure Print;
begin
inherited;
writeln('Курс: ',course,' Группа: ',group);
end;
- Обзор классов и объектов
- Видимость членов класса и модификаторы доступа
- Методы
- Инициализаторы полей
- Конструкторы
- Предварительное объявление классов
- Переменная Self
- Свойства
- Индексные свойства
- Наследование
- Переопределение методов
- Наследование конструкторов
- Виртуальные методы и полиморфизм
- Абстрактные методы
- Перегрузка операций
- Классовые поля, методы и конструкторы
- Методы расширения
- Анонимные классы
- Автоклассы
- Виртуальные методы и их переопределение
- Переопределение виртуальных методов в обобщенном классе
- Переопределение метода
- Множественные интерфейсы и имена методов
- Перегрузка методов с несколькими параметрами типа
- Переопределение System.Object.GetHashCode()
- Параметры методов
- Обзор методов асинхронного ввода
- 3. Узкий диапазон методов конкурентного взаимодействия
- 7.12. Динамическое назначение методов
- Обзор методов управления памятью
- Выбор методов лидгена