这怎么可能?看到下面的帖子让我感到困惑

时间:2013-06-26 09:19:25

标签: 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;
        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

1 个答案:

答案 0 :(得分:1)

您的Coffee-object是一个Demo-Object和Demo1-Object,因此Demo d=c;是一个有效的语句,以及Demo1 d1=c;。之后c,d和d1都包含对同一对象的引用,因此将输出相同的字符串,因为您从未定义display()的任何其他功能。

除了你的代码真的没用之外,正确的方法是让Demo1实现Demo然后Coffee只扩展Demo1。通过这种方式,可以更清楚地了解这里发生的事情。