如何强制在我的抽象类的所有子类中定义构造函数

12 浏览
0 Comments

如何强制在我的抽象类的所有子类中定义构造函数

我有一个定义抽象方法的抽象类A。这意味着,为了使一个类可以实例化,所有的抽象方法都必须被实现。

我希望所有的子类都实现一个带有两个整数参数的构造函数。

声明一个构造函数会破坏我的目的,因为我希望构造函数在子类中定义,并且我对实现一无所知。此外,我不能声明一个构造函数为抽象的;

有没有办法做到这一点?

我想要的示例:

假设我正在定义一个矩阵类的API。在我的问题中,矩阵的尺寸是不可改变的。

要创建一个矩阵,我需要提供它的大小。

因此,我希望所有的实现者都提供一个带有大小参数的构造函数。这个构造函数是由问题驱动的,而不是由实现的关注点驱动的。实现可以根据需要做任何操作,只要保持所有方法的语义。

假设我想在我的抽象类中提供一个基本的invert()方法的实现。这个方法将创建一个具有this反转尺寸的新矩阵。更具体地说,它会使用一个接受两个整数参数的构造函数创建一个与this相同类的新实例。因为它不知道将使用哪个实例,所以它将使用反射(getDefinedConstructor),我希望有一种方法来保证我能得到它,并且对于实现来说它是有意义的。

0