【问题标题】:Since Interface cannot inherit Class, then how "Object" class methods available to the interface reference in java? [duplicate]既然Interface不能继承Class,那么java中接口引用的“Object”类方法怎么用呢? [复制]
【发布时间】:2015-10-29 17:46:04
【问题描述】:

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

既然Interface不能继承Class,那么Object类的方法如何在java中引用到接口呢?

例如:-

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 接口引用它是如何可见的?

【问题讨论】:

  • 你到底是什么意思?你能举个例子吗?

标签: java oop inheritance interface


【解决方案1】:

接口不继承自 Java 中的 Object 类,并且所有接口也没有隐式继承的通用 Object(根)接口(所有类都这样做)

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

参考 Java 语言规范9.2 Interface Members.

【讨论】:

    【解决方案2】:

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

    9.2. Interface Members

    ...

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

    【讨论】:

      【解决方案3】:

      您可能编写的每个类都隐式继承自Object

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-28
        • 2016-10-20
        • 1970-01-01
        • 2021-08-17
        • 2011-11-24
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        相关资源
        最近更新 更多