java - 更改返回类型为接口(interface)中 Object 的重写方法的返回类型 - java

标签 java interface

<分区>

Possible Duplicate:
Overriding return type in extended interface - Bad idea?

让我们考虑以下接口(interface),

public interface Cat{
    public Object getCat();//returns any type of object
}

public interface DomesticCatInterface{
    public String somethinOnlyRelatedToDomesticCat();
}

public interface WildCatInterface{
    public String somethinOnlyRelatedToWildCat();
}

public class DomesticCat implements Cat, DomesticCatInterface{
    @Override
    public DomesticCat getCat(){
        return this;
    }

    @Override
    public String somethinOnlyRelatedToDomesticCat(){
        return "something";
    }

}

public class WildCat implements Cat, WildCatInterface{
    @Override
    public WildCat getCat(){
        return this;
    }

    @Override
    public String somethinOnlyRelatedToWildCat(){
        return "something";
    }
}

当我需要从类中获取引用时,这是一个很好的做法吗?

最佳答案

与其让 getCat() 返回一个对象,不如让它返回一只猫。您应该能够返回任何实现 Cat 的类。在 Java 5 中,这称为 Co-variant return types

关于java - 更改返回类型为接口(interface)中 Object 的重写方法的返回类型 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833422/

相关文章:

java - JPA/hibernate 错误违反外键约束

java - Deflater.deflate 和小输出缓冲区

java - 正确地保留方向变化的听众

delphi - 升级到 Delphi 10.4 Sydney 时缺少 ToolsAPI 接口(interface)方法的实现

interface - 无法在非接口(interface)值上键入开关

c# - 为什么我不能在隐式转换时返回接口(interface),而 ExpandoObject 可以?

java - 为什么方法引用在场景 1 中显示编译器错误但在场景 2 中有效?

java - servlet 中单例的垃圾收集

java - 删除选择冲突而不向前看 - JavaCC

java - 为什么我们需要一个 Runnable 来启动线程?