可能重复:
Do interfaces inherit from Object class in java接口是“对象”吗?
package inheritance;
class A{
public String display(){
return "This is A!";
}
}
interface Workable{
public String work();
}
class B extends A implements Workable{
public String work(){
return "B is working!";
}
}
public class TestInterfaceObject{
public static void main(String... args){
B obj=new B();
Workable w=obj;
//System.out.println(w.work());
//invoking work method on Workable type reference
System.out.println(w.display());
//invoking display method on Workable type reference
//System.out.println(w.hashCode());
// invoking Object's hashCode method on Workable type reference
}
}
正如我们所知,它可以调用的方法取决于参考变量上,我们要调用类型。在这里,在代码中,work()方法在“w”引用(这是可加工类型)上被调用,因此方法调用将成功编译。然后,在“w”上调用display()方法,这会产生一个编译错误,说明没有找到显示方法,因为Workable不知道显示方法。然后我们尝试调用Object类的方法,即hashCode(),这会产生成功的编译和执行。这怎么可能?任何合理的解释?
所有对象都是Java中的Object。这可能是为什么它可以调用Object的方法。我认为有人会引用标准来正确回答这个问题。 – nhahtdh 2012-07-09 02:36:17
要在对象上调用哪些方法取决于引用该对象的引用的类型。这里,Workable类型引用指的是对象,以及Work类型引用如何知道Object类的方法? – PrashantGupta 2012-07-09 02:52:18
因为一切都是'对象'(除了原始类型),引用的类型并不重要。我想这就是它的工作原理。 – nhahtdh 2012-07-09 03:00:16