从基类调用构造函数-高于2级

时间:2019-05-06 07:48:10

标签: oop windev

在WinDev中,我有一个基类,可以说BaseClass。该基类具有构造函数:

PROCEDURE CONSTRUCTOR(param1, param2, param3)

我有一个扩展基类的第一个子类,比方说childClass1。这个第一个孩子的构造函数只有两个firsts参数:

ChildClass1 is a class inherits from BaseClass
...

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

我想拥有一个从ChildClass1继承但使用BaseClass的构造函数的类。如果不重新定义BaseClassChildClass1的3参数构造函数,似乎是不可能的。

这是我想要做的:

ChildClass2 is a class inherits from ChildClass1
...

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

但是可以说BaseClass既不是基类也不是ChildClass1的成员。

唯一的解决方案是在BaseClass内重新定义ChildClass1的构造函数,以便ChildClass2可以使用它吗?

这似乎缺乏OOP处理。

干杯

1 个答案:

答案 0 :(得分:1)

必须在派生类的构造函数的第一条语句中调用基类或成员的显式构造函数。
示例:

//----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)