Java 多形性与类对象
我们知道每个类都从Object扩展而来,这意味着我们可以使用所有Object的方法 在任何班级。我的问题如下:Java 多形性与类对象,java,polymorphism,Java,Polymorphism,我们知道每个类都从Object扩展而来,这意味着我们可以使用所有Object的方法 在任何班级。我的问题如下: interface B{ } public class A implements B{ public static void main(String[] args){ B i = new A(); i.display();//we can't do this : becaus
interface B{
}
public class A implements B{
public static void main(String[] args){
B i = new A();
i.display();//we can't do this : because the interface B doesn't define such a method
System.out.println(i.toString());// we can do this although the interface doesn't extend from Object
}
public void display(){
}
}
所以我认为问题很清楚,为什么我可以调用toString方法,尽管接口B不能从Object扩展?这在下面的部分中有详细说明:
- 如果一个接口没有直接的超级接口,那么该接口隐式声明了一个带有签名的
,返回类型s
,成员方法r
,和m
子句throws
对应于t
对象
中声明的每个
公共
实例方法
,具有签名m
,返回类型s
,和r
子句throws
,除非具有相同签名的t
抽象
方法,相同的返回类型,接口显式声明了一个兼容的
子句throws
这确保了可以通过任何接口调用
对象
方法。A
从对象
扩展而来。不,是这样的。Java中的每个对象
都有一个toString
。B
的一个实例是一个对象
。因为,正如您在问题中所说:我们知道每个类都是从对象扩展而来的,这意味着我们可以在任何情况下使用所有对象的方法class@OliverCharlesworthA
扩展的内容与B
类型的变量无关。这是一个关于类型系统的有效问题。@MarkoTopolnik:这是一个公平的观点;我没有注意到对象是通过B
引用访问的。所以理论上有点像接口对象,所有最上层的接口(没有超类的接口)都扩展了它?