Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Переопределение методов с сохранением функциональности



В приведенном примере метод GetResult класса TwoNums полностью переопределен в классе ThreeNums, то есть его изначальная функциональность полностью утеряна, но включена в функциональность замещающего метода с помощью копирования. Это практически всегда возможно, если разработчик класса имеет доступ к исходному тексту класса-родителя, но не всегда удобно, так как программный код, реализующий метод, может иметь немалые размеры.

Для сохранения функциональности переопределенного метода в Delphi имеется возможность его вызова из переопределяющего метода с помощью ключевого слова Inherited, используемого следующим образом:

Inherited <Название метода>(<список параметров>);

Аналогично могут вызываться и переопределенные методы, которые являются функциями:

...:= Inherited <Название метода>(<Список параметров>);

Изменим предыдущий пример таким образом, чтобы сумма свойств в методе GetResult вычислялась с использованием переопределенного варианта этого метода, описанного в классе TwoNums (листинг 3.11).

Листинг 3.11. Переопределение методов с сохранением функциональности

Unit Overriding2;

Interface

Type

TwoNums = class

public

a, b: Integer;

function GetResult: Integer; virtual;

End;

ThreeNums = class (TwoNums)

public

c: Integer;

function GetResult: Integer; override;

End;

Implementation

function TwoNums.GetResult: Integer;

Begin

Result:= a + b;

end;

function ThreeNums.GetResult: Integer;

Begin

Result:= Inherited GetResult + с;

{Результат функции — сумма значения, выдаваемого

переопределенным методом (сумма а и b), и свойства с}

end;

End.





Дата публикования: 2014-11-02; Прочитано: 349 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...