Доброго времени суток. Собственно, вопрос больше относиться к теории. Но хотелось бы разобраться в следующем (следующий фрагмент взят из хэлпа Delphi 7):
If a method declaration specifies the same method identifier and parameter signature as an inherited method, but doesn't include override, the new declaration merely hides the inherited one without overriding it. Both methods exist in the descendant class, where the method name is statically bound. For example,
| Код | type T1 = class(TObject) procedure Act; virtual; end; T2 = class(T1) procedure Act; // Act is redeclared, but not overridden end; var SomeObject: T1; begin SomeObject := T2.Create; SomeObject.Act; // calls T1.Act end;
|
M Alexeis | Модератор: используйте подсветку кода. |
Вопрос заключается в следующем - кто кого в этом примере прячет (hides)? Возможно, пример кода не сильно удачный для того что бы подтвердить слова - "the new declaration merely hides the inherited one without overriding it". Помогите пожалуйста уяснить данный момент. Буду очень благодарен за пример кода демонстрирующий данный нюанс - оverriding vs hiding Просто в приведенном примере кода из хелпа - SomeObject.Act; - дейсвтительно вызывается T1.Act. Так при каких обстоятельствах T2.Act будет скрывать T1.Act? Приведите пример кода пожалуйста. |