5.5. Полиморфизм
____________________________________________________________________
Но, давайте вспомним, что методы как мы отмечали выше, характеризуют некоторые действия по обработке данных класса. В этом контексте мы можем ввести в рассмотрение действие "Получить сведения об объекте". В одном слу-
чае это будет "Получить сведения о человеке", в другом случае "Получить све-
дения о студенте", в третьем – "Получить сведения о преподавателе". Во всех трех случаях это в принципе однотипные действия, хотя и несколько разли-
чающиеся по сути. Мы можем написать совсем коротко – "Получить сведения".
Так вот, возвращаясь "к нашим баранам", мы можем констатировать, что функция GetData это и есть действие "Получить сведения". Поэтому мы мо-
жем использовать в дочерних классах методы с таким же именем, что и в роди-
тельском классе. Конечно, реализации этих методов различаются и даже могут различаться кардинально, но по сути, если вы хотите реализовать однотипные аспекты поведения объектов, вы можете и должны давать одинаковые имена их методам. Давая им различные имена, вы можете очень скоро запутаться, осо-
бенно если производных классов достаточно много. Отсюда, мы можем напи-
сать:
function TStudent.GetData: string; begin
Result:= name + ' ' + fam + ', группа ' + group; end;
function TProfessor.GetData: string; begin
Result:= name + ' ' + fam + ', кафедра ' + kafedra; end;
Такое явление, когда методы класса родителя и методы дочерних классов имеют одинаковые имена, но различные реализации называется полиморфиз-