多态和类Object

时间:2014-10-26 10:02:30

标签: 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 : 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扩展?

1 个答案:

答案 0 :(得分:5)

这是在JLS §9.2. Interface Members

中详细说明的
  
      
  • 如果接口没有直接的超接口,则接口隐式声明public abstract成员方法m,其签名为s,返回类型为r,和throws子句t对应每个public实例方法m,其中包含签名s,返回类型rthrows子句在t 中声明Object ,除非具有相同签名,相同返回类型和兼容abstract子句的throws方法明确声明为界面。
  •   

这确保可以通过任何接口调用Object方法。