Бояться не надо



Статьи о Delphi

Методы объектов

   Методы — это процедуры и функции, которые принадлежат объекту. С помощью своих методов объект выполняет возложенные на него обязанности. Теперь нам предстоит узнать о методах объектов немного больше.

   Как вы уже знаете, методы описываются внутри объявления объекта и бывают нескольких типов.
  • static (статические) — это простые процедуры и функции. Если при описании метода вы ничего не указали, то используется именно этот тип. Для компилятора это самый простой тип метода, потому что в потомках такой метод не может быть изменен, и поэтому заранее можно узнать адрес этого метода в памяти.
  • virtual (виртуальные) — такие методы могут быть переопределены в потомках объекта. Например, если у вас есть объект гараж и метод ворота, то в его потомке этот метод может быть заменен улучшенной версией. Для определения адреса Delphi строит таблицу виртуальных методов, которая позволяет во время выполнения программы определить адрес метода. В такой таблице хранятся все методы текущего объекта и его предка.
  • dynamic (динамические) — эти методы схожи с виртуальными, но для определения адреса используется другой способ. Для каждого объекта строится таблица только из его методов. Каждому методу назначается уникальный индекс. В данном случае экономится память, потому что не надо хранить адреса методов предков, но для поиска любого из них тратится намного больше времени.
  • message (сообщения) — такие методы реагируют на события операционной системы. Для большинства сообщений ОС Windows в Delphi уже есть специальные обработчики событий, но если вам нужно, чтобы метод реагировал на определенное событие, которого нет у компонента, необходимо определить его вручную.
  • abstract (абстрактный) — такой метод будет только объявлен в объекте, а реализации у него не будет. Если в объекте есть хотя бы один такой метод, то он считается абстрактным. Такой объект нельзя использовать.
       Реализацию метода должны сделать потомки, и именно с потомками можно работать. Таким образом, вы можете в каком-либо объекте зарезервировать имя метода для потомков, чтобы они реализовали в нем какое-то действие.
   Если вы объявили метод как virtual или dynamic, то можно переопределить их действия в наследниках.



По материалам сайта О Delphi


В начало