Расширение метода класса... как?

fedotxxl

Well-Known Member
09.11.2005
614
0
#1
Если создать класс b на основе класса a, то при инициализации сначала исполнится метод New класса a, а потом класса b. Как также сделать и для моих самописных методов? Т.е. если я хочу расширить метод MyPrint, то не копировать же мне код из класса а в класс b...
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#3
Кто тебе сказал, что A.New исполнится? :) если ты его явно не вызовешь из B.New, то он не исполнится...
любой метод объявленный в дочернем классе переопределяет метод предка, для того, чтобы выполнить метод предка, нужно его явно вызвать, для этого в LS используется такая конструкция:

ParentClassName..Method

ParentClassName - здесь любой из предков, но чаще всего именно прямой юзают,
Method - имя любого метода класса ParentClassName.

конструктор, правда, нужно вызвать немного иначе, это указано в хелпе:

Sub New [ ( [ argList ] ) ] [ , baseClass ( [ baseArgList ] ) ]
[ statements ]
End Sub
 
M

Mihal

Гость
#4
Конструктор ВСЕГДА будет исполняться сверху вниз. Мало того, в дочернем классе не пропишешь конструктор не указав шо передаются в конструктор родительского. Лотус тупо не даст. Так шо конструкторы ВСЕГДА вызываются сверху-вниз. Диструкторы ВСЕГДА идут в обратном порядке. И ничего прописывать не надо им ваще. по другому не бывает. Иначе это уже не ООП, а фигня какая-то :).

Для того чтобы в дочернем методе использовать метод родителя надо замутить "..". Как уже было указано.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#5
о, айм сори :)
конструктор дочернего действительно всегда выполнит конструктор родительского... это обычные методы требуют явного вызова...
Миша всегда на страже ООП! респект :)
 
04.09.2006
2 566
2
#6
Как также сделать и для моих самописных методов?
Я в Лотусе не шарю, но разве речь идет о конструкторах? Наверное нужно некоторое подобие виртуальных методов

Прошу прощения, не заметил фразу:
Для того чтобы в дочернем методе использовать метод родителя надо замутить "..". Как уже было указано.