Объектно-ориентированное программирование



         

Объектно-ориентированное программирование - стр. 97


Только, если для выхода использовалась процедура Fail, конструктор будет выдавать значение False. Если конструктор делает вызов конструктора предка, при ошибке в объекте предка возникает и ошибка вызова конструктора. Если конструктор частично инициализировал объект перед ошибочным вызовом конструктора предка, он должен отменить частичную инициализацию. Рекомендуется использовать программу Fail  только в исключительных случаях.

 

Параметры    Self

Кроме явных параметров, указанных в  определении метода, каждый метод также имеет неявный параметр Self. Этот параметр соответствует непосредственно экземпляру объекта, из которого метод вызывался, и все поля данных этого экземпляра доступны через параметр Self. В Турбо Паскале параметр Self  подразумевается. Однако иногда необходимо ссылаться к полям объекта в неоднозначном контексте. Приведенный в примере  конструктор должен ссылаться к полям параметра Self  и к идентичным полям параметра Other. Явное использование параметра Self  упрощает эту процедуру:

                        Constructor SomeType. CE From ( var other: SomeType)

                             begin

                                       Self.foo:= other.foo;

                                        Self.bar:= other.bar;

                              end;

3.9. Стандартные директивы VIRTUAL и  PRIVATE

В отличие от зарезервированных слов, стандартные директивы могут переопределяться пользователем. Вы можете вполне корректно объявить переменную с именем virtual   или процедуру с именем private, но, делая это, вы усложняете себе работу. Избегайте использования этих терминов  в качестве имен идентификаторов также, как избегайте пользования других директив типа Absolute,Interrupt, far.

Если директива virtual  появляется после объявления метода, данный метод имеет определенные специальные свойства и ограничения. Виртуальный метод может перекрывать статический метод предка, но обратное неверно. Если вы делаете метод виртуальным, то каждый потомок, который перекрывает этот метод, должен выполнять это также виртуальным методом, и заголовок должен оставаться идентичным заголовку в самом старшем предке.


Содержание  Назад  Вперед