parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Наследование и перегрузка. Гимнастика для ума.

egr 05.10.2003 08:59 / 05.10.2003 09:03

Имеем:

1. 2 класса - Class1 и Class2
2. Class2 потомок Class1
3. В классе Class1, в конструкторе, определяется поле класса test, которое получается путём вызова метода ^lang[]
4. Метод ^lang[] определён в базовом классе Class1 и перегружается в классе потомке (Class2)
5. В классе потомке (Class2) работа метода зависит от поля $flag
6. Поле класса $flag не может быть известно в Class1

Код:
test.html:
@USE
/class1.p
/class2.p

@main[]
$objClass1[^class1::init[]]
$objClass2[^class2::init[]]

Поле test формируется вызовом ^^lang^[^] и:<p/>

Полеtest класса Class1 - $objClass1.test<br/>
Поле test класса Class2> - $objClass2.test<p/>
Однако вызов ^^lang^[^] в Class2  даёт - ^objClass2.lang[]
Класс Class1:
@CLASS
class1

@init[]
$test[^lang[]]

@lang[]
$result[ru]
Класс Class2:
@CLASS
class2

@USE
/class1.p

@BASE
class1

@init[]
^BASE:init[]
$flag(1)

@lang[]
^if($flag){
	$result[en]
}{
	$result[^BASE:lang[]]
}
В test.html выводится:
Поле test формируется вызовом ^lang[] и:

Поле test класса Class1 - ru
Поле test класса Class2 - ru

Однако вызов ^lang[] в Class2 даёт - en
А я хочу так:
Поле test формируется вызовом ^lang[] и:

Поле test класса Class1 - ru
Поле test класса Class2 - en

Однако вызов ^lang[] в Class2 даёт - en
Вопрос - как разорвать замкнутый круг?