Java:返回一个扩展带有参数的抽象类的对象

标签 java inheritance abstract-class

我有一个界面

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/

相关文章:

java - 跟着 picasso 一起画画

Java子类化: what is the method that will get triggered?

C++ : calling an abstract base class constructor/undefined symbol in shared object

java - 为什么 Java 允许从接口(interface)多重继承但不允许从抽象/具体类继承

python - 如何在 NotImplementedYet ABC 方法中定义关键字/可变参数(避免 pylint : arguments-differ)

java - 有谁知道 Java Comparators 库?

java - ArcGIS Java ServiceFeatureTable 查询始终仅返回 1 个要素

java - 边框布局 : Nested CENTER Panel Grows But does Not Resize Outer Panel

java - 覆盖属性

C#:派生类上具有不同返回类型的属性