java - 从接口(interface)返回抽象类好吗

标签 java oop design-patterns polymorphism

我有一个名为ABC 的接口(interface)。我还有一个抽象类 PQR 并且有 3 个类扩展了这个抽象类。

例如:

abstract class PQR {
    //...
}

interface ABC {
    //other methods....
    PQR returnRightClass();
}

class X extends PQR {
}

class Y extends PQR {
}

class Z extends PQR {
}

现在有实现 ABC 接口(interface)的类。那么我应该怎么做才能从 X、Y 和 Z 中获得正确的类?

最佳答案

返回一个抽象类没有错,不过建议尽量使用接口(interface)。如果你可以让 PQR 成为一个接口(interface),那就去做吧。但如果没有,不用担心。

Now there are classes which implements ABC interface. So what should I do to get the right class from x ,y ,z?

只需确保每个实现 ABC 的类中 returnRightClass() 的每个实现都返回一个正确的 PQR 实例(x、y 或 z ).

编辑

回答你的问题:

public MyClassX implements ABC {

    public PQR returnRightClass() {
        return new x();
    }

}

或者

public MyClassY implements ABC {

    public PQR returnRightClass() {
        return new y();
    }

}

或者

public MyClassZ implements ABC {

    public PQR returnRightClass() {
        return new z();
    }

}

关于java - 从接口(interface)返回抽象类好吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732431/

相关文章:

Java:在数组中搜索整数值时出现 ArrayIndexOutOfBoundException

java - java中分配的内存是否仍保留在下面的代码中

oop - 如何将此 C++ 代码重写或转换为 Haskell 代码

design-patterns - 您认为最滥用的设计模式是什么?

c# - 在工厂内运行时使用 Ioc 容器来确定类初始化

java - 谷歌云消息 : don't receive alerts when iOS App is in background

java - 从 Java 调用 Kotlin 时如何获取错误的行号?

javascript - 在另一个函数中访问对象属性

java - 如何使面向对象的java项目完全通用

c++ - boost 序列化保存到多种存档类型并防止在使用指针加载时构建新对象