Вызов конструктора из базового класса - на 2 уровня выше - PullRequest
0 голосов
/ 06 мая 2019

В WinDev у меня есть базовый класс, скажем, BaseClass. Этот базовый класс имеет конструктор:

PROCEDURE CONSTRUCTOR(param1, param2, param3)

У меня есть первый дочерний класс, который расширяет базовый класс, скажем, childClass1. У этого первого потомка есть конструктор с двумя первыми аргументами:

ChildClass1 is a class inherits from BaseClass
...

PROCEDURE CONSTRUCTOR(param1, param2)
Constructor BaseClass(param1, param2, 1)

И я хотел бы иметь класс, который наследуется от ChildClass1, но использует конструктор из BaseClass. Кажется невозможным без переопределения конструктора 3 параметров BaseClass внутри ChildClass1.

Вот что я пытался сделать:

ChildClass2 is a class inherits from ChildClass1
...

PROCEDURE CONSTRUCTOR(param1, param2)
Constructor BaseClass(param1, param2, 2)

Но это говорит о том, что BaseClass не является ни базовым классом, ни членом ChildClass1.

Единственное ли решение - переопределить конструктор BaseClass внутри ChildClass1, чтобы ChildClass2 мог его использовать?

Это похоже на отсутствие обработки ООП.

Приветствия

1 Ответ

1 голос
/ 22 мая 2019

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

//----Declare the BaseClass1 class
BaseClass1 is Class
BaseClass1Member is int
END
//---- Constructor of BaseClass1
PROCEDURE Constructor(Param1)
Info("Constructor of BaseClass1 => " + Param1)
//----Declare the class named BaseClass2
BaseClass2 is Class
BaseClass2Member is int
END
//---- Constructor of BaseClass2
PROCEDURE Constructor(Param1)
Info("Constructor of BaseClass2 => " + Param1)
//---- Declaration of DerivedClass
DerivedClass is Class
// Inheritance of BaseClass1 whose 
// Constructor expects a parameter
inherits from ClassBase1
// BaseClass2 member whose 
// Constructor expects a parameter
DerivedClassMember is BaseClass2
END
//----Constructor of DerivedClass
PROCEDURE Constructor()
// Explicit call to Constructor
Constructor BaseClass1(10) 
Constructor DerivedClassMember(20)
...