0

在 WinDev 中,我有一个基类,比如说BaseClass. 这个基类有一个构造函数:

PROCEDURE CONSTRUCTOR(param1, param2, param3)

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

ChildClass1 is a class inherits from BaseClass
...

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

我想要一个继承自ChildClass1但使用构造函数的类BaseClassBaseClass如果不重新定义内部的 3 参数构造函数,这似乎是不可能的ChildClass1

这是我试图做的:

ChildClass2 is a class inherits from ChildClass1
...

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

但是 is 说BaseClass它既不是基类也不是ChildClass1.

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

这似乎缺乏 OOP 处理。

干杯,

4

1 回答 1

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)
于 2019-05-22T09:51:08.910 回答