Java 怎么可能呢?看到下面的帖子,我很困惑

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;

这个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;
        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并试图澄清我的概念。然后也许不要从多态性和接口开始,如果你不知道它们中的任何一个,最多不要将它们混合在一起。试着一次学习一个,可能从多态性/继承/“扩展”开始,然后如果您理解了这一点,就转到接口。如果您不知道自己在代码中做了什么,那么解释代码中发生了什么是毫无用处的。