此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
答案 0 :(得分:1)
您的Coffee-object是一个Demo-Object和Demo1-Object,因此Demo d=c;
是一个有效的语句,以及Demo1 d1=c;
。之后c,d和d1都包含对同一对象的引用,因此将输出相同的字符串,因为您从未定义display()
的任何其他功能。
除了你的代码真的没用之外,正确的方法是让Demo1实现Demo然后Coffee只扩展Demo1。通过这种方式,可以更清楚地了解这里发生的事情。