由于Interface不能继承Class,那么" Object" java中接口引用可用的类方法?

时间:2015-08-06 14:14:35

标签: java oop inheritance interface

根据面向对象编程(OOP)接口不应继承Class。

由于Interface无法继承Class,那么java中接口引用的Object类方法如何可用?

例如: -

public interface Test {

    public void functionA();
}
class Child implements Test{

  public void functionA() {

  }

  public static void main(String[] args) {
     Test test = new Child();
     test.toString(); // since toString is Objects class method, How it's visible for Test interface ref?
  }
}

由于toStringObject的类方法,Test接口参考如何显示?

3 个答案:

答案 0 :(得分:6)

接口不从Java中的Object类继承,并且所有接口都没有隐式继承的公共Object(根)接口(正如所有类所做的那样)

接口有一个为Object中的每个公共方法声明的隐式方法。

参考Java语言规范9.2 Interface Members.

答案 1 :(得分:4)

指定每个接口类型以隐式声明所有公共Object方法。这就是Java语言规范处理这种形式的方式。

  

9.2. Interface Members

     

...

     
      
  • 如果接口没有直接的超接口,则接口隐式声明public abstract成员方法m,其中包含签名s,返回类型r和{{1} } throws对应于t的每个公共实例方法m,返回类型sr throws {}} 1}},除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的抽象方法。
  •   

答案 2 :(得分:0)

您可能隐写的每个类都继承自bottomrightcontainer

因为接口(例如Object)肯定会引用 某些对象(类似java.util.List的类,ArrayList或者LinkedList接口的其他一些实现,Java让你使用List的方法。