-5

这个 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
4

1 回答 1

1

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

除了你的代码真的没用,这样做的正确方法更有可能是让 Demo1 实现 Demo,然后 Coffee 只扩展 Demo1。这样会更清楚这里发生了什么。

于 2013-06-26T09:29:03.873 回答