java - 覆盖扩展接口(interface)中的返回类型 - 坏主意?

标签 java oop

在 Java 中,您可以执行以下操作:

public interface IEngine{}
public interface ICoolEngine extends IEngine{}

public interface Car
{
   IEngine getEngine();
}
public interface ICoolCar extends ICar
{
    @Override
    ICoolEngine getEngine();
}

虽然这很好地解决了我一直在努力解决的问题,但“感觉”有些地方不对。

我是不是犯了一些令人讨厌的设计失礼?

最佳答案

不,你做对了。协变返回只是指定该类及其下面的类必须返回父类返回的原始通用类参数的特定子类。这也意味着你的子类仍然与要求它返回引擎的原始接口(interface)兼容,但如果你知道它是一个 ICoolCar,它有一个 ICoolEngine - 因为更具体的接口(interface)知道更具体的功能。这适用于接口(interface)和类 - 这是正确的、适当的并且对引导很有用。

关于java - 覆盖扩展接口(interface)中的返回类型 - 坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864557/

相关文章:

java - 我正在尝试将二维字符数组初始化为空格,但控制台中的输出很奇怪

java - 使用 Java Streams 确定流的子集是否超过阈值

php - 使用 for 循环访问类变量

java - eclipse ubuntu 18.04安装java.lang.ClassNotFoundException :

java - 当我使用 <s :datetextfield/> tag in a jsp 时发生异常

java - 最大化和最小化 JInternalFrame

javascript - 在 JavaScript 中是否有 "right"的继承方式?如果是这样,它是什么?

c++ - C++中,为什么指针转换时地址变了?

.net - 一个类中有多少对象太多了?

python - 继承类属性而不声明属性或更好的 OOP