我有一个定义抽象方法的抽象类A. 这意味着,对于要实现的类,必须实现所有抽象方法.
我希望我的所有子类都实现一个带有2个int作为参数的构造函数.
声明构造函数会破坏我的目的,因为我想要在子类中定义的构造函数,我对实现一无所知.而且我不能将构造函数声明为抽象;
有没有办法做到这一点 ?
我想要的例子:
让我们说我正在定义Matrix类的API.在我的问题中,Matrix无法改变其尺寸.
要创建Matrix,我需要提供它的大小.
因此,我希望我的所有实现者都为构造函数提供大小作为参数.这个构造函数的动机是问题,而不是实现问题.只要保留了方法的所有语义,实现就可以用它们做任何事情.
假设我想invert()
在抽象类中提供该方法的基本实现.此方法将创建具有this
反转尺寸的新矩阵.更具体地说,正如它在抽象类中定义的那样,它将this
使用带有两个整数的构造函数创建同一类的新实例.由于它不知道实例,它将使用反射(getDefinedConstructor),我想要一种方式来保证我会得到它,并且它将对实现有意义.
在Java中,我可以以某种方式强制扩展抽象类的类来实现其构造函数,并将Object作为参数吗?
就像是
public abstract class Points {
//add some abstract method to force constructor to have object.
}
public class ExtendPoints extends Points {
/**
* I want the abstract class to force this implementation to have
* a constructor with an object in it?
* @param o
*/
public ExtendPoints(Object o){
}
}
Run Code Online (Sandbox Code Playgroud)