好的还是坏的OOP?

Sta*_*bie 8 architecture oop design-patterns

假设有一个带有构造函数的抽象类,该构造函数调用一个尚未由子类实现的受保护抽象方法.这是一个好主意还是坏主意?为什么?

Ree*_*sey 3

这是一个坏主意。

您基本上是在构造函数中创建控制反转。基类中被调用的方法在基类数据初始化之前被调用(在大多数语言中),这也很危险。它很容易导致不确定的行为。

请记住,在大多数语言中,当您构造一个类时,所有基类构造都会首先运行。因此,如果您有类似:的构造函数MyClass() : MyBaseClass() {},通常MyBaseClass会完整运行,然后 MyClass的构造函数也会执行。但是,通过在基类中使用虚拟方法,您将在MyClass完全初始化之前调用实例方法 - 这可能非常危险。