我有一个界面
public interface I
{
public AnAbstractClass k(); //Abstract Class constructor takes two arguments
}
对于此接口(interface)方法的实现,我想返回一个扩展该 AbstractClass 的通用对象,并为其提供两个参数构造函数
澄清我想要实现的目标。在实现 I 的类中:
public AnAbstractClass k()
{
//return a new implementing AbstractClass object AbstractClassObject(arg1,arg2)
}
最佳答案
构造函数不是继承的,因此 AnAbstractClass 的子类不一定具有双参数构造函数。如果子类确实有一个双参数构造函数,那么没有什么可以阻止您使用双参数构造函数创建该子类的实例并返回它:
public abstract class AnAbstractClass
{
public AnAbstractClass(String foo, String bar) {
System.out.format("created with (%s, %s)\n", foo, bar);
}
}
public class BaseClass extends AnAbstractClass
{
public BaseClass(String foo, String bar) {
super(foo, bar);
}
}
public interface I
{
public AnAbstractClass k();
}
public class Implementation implements I
{
@Override public AnAbstractClass k() {
return new BaseClass("hello", "world");
}
}
public class Demo
{
public static void main(String[] args) {
I i = new Implementation();
AnAbstractClass a = i.k();
}
}
关于Java:返回一个扩展带有参数的抽象类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21591398/