Java 怎么可能呢?看到下面的帖子,我很困惑
这个Coffee类不会重写Demo接口的方法。但是它有一个超类,它有一个显示方法。我的问题是:这是如何工作的Java 怎么可能呢?看到下面的帖子,我很困惑,java,Java,这个Coffee类不会重写Demo接口的方法。但是它有一个超类,它有一个显示方法。我的问题是:这是如何工作的 public class Coffee extends Demo1 implements Demo { public static void main(String args[]) { Coffee c=new Coffee(); c.display(); Demo d=c; Demo1 d1=c;
public class Coffee extends Demo1 implements Demo {
public static void main(String args[])
{
Coffee c=new Coffee();
c.display();
Demo d=c;
Demo1 d1=c;
d.display();
d1.display();
}
}
interface Demo
{
public void display();
}
class Demo1
{
public void display()
{
System.out.println("this is method in demo1");
}
}
输出:
this is method in demo1
this is method in demo1
this is method in demo1
您的Coffee对象既是Demo1对象也是Demo1对象,因此
demod=c
是一个有效的语句,以及Demo1 d1=c代码>。此后,c、d和d1都包含对同一对象的引用,因此将输出相同的字符串,因为您从未定义过display()
的任何其他功能
除此之外,您的代码实际上是无用的,正确的方法是让Demo1实现Demo,然后只扩展Demo1。这样可以更清楚地了解此处发生的情况。提示:您的问题可能会因为格式、标记或标题不正确而被否决。这与div标记有什么关系?这有什么奇怪的?它还能打印出什么?对不起,伙计们,我刚开始这里谢谢你们的回答。我刚刚开始使用SCJP并试图澄清我的概念。然后也许不要从多态性和接口开始,如果你不知道它们中的任何一个,最多不要将它们混合在一起。试着一次学习一个,可能从多态性/继承/“扩展”开始,然后如果您理解了这一点,就转到接口。如果您不知道自己在代码中做了什么,那么解释代码中发生了什么是毫无用处的。