java中的面向对象接口继承

pes8fvy9  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(335)

这个问题在这里已经有答案了

在java中,我们可以将超类对象传递给子类引用吗(3个答案)
两年前关门了。
为什么代码:

Hello hello = GreetingUtil.hello();

获取此错误?

Incompatible types
Required Hello
Found Greeting

假设这些是类/接口,我无法控制 Greeting 以及 HelloWorld 因为它们是外部API,不是吗 Hello 属于 Greeting 类型?

public interface Greeting {
}

public interface Hello extends Greeting {
}

public class HelloWorld implements Greeting {
}

public class GreetingUtil {
    public static Greeting hello() {
        return new HelloWorld();
    }
}

或者,我弄错了吗?谢谢您。

e4eetjau

e4eetjau1#

如果 Greeting 不在应用程序代码的范围内,则应更改 HelloWorld 实施 interface Hello 取而代之的是:

public class HelloWorld implements Hello {
}

然后再回来 HelloGreetingUtil.hello 方法也是:

public static Hello hello() {
    return new HelloWorld();
}
bjg7j2ky

bjg7j2ky2#

helloworld和hello是两个兄弟姐妹,不是父/子。
问题在代码中: Hello hello = GreetingUtil.hello(); 应该有

Greeting greeting = greetingUtil.hello();

相关问题