【问题标题】:Interfaces: Java Language Specification [closed]接口:Java 语言规范 [关闭]
【发布时间】:2014-02-24 12:07:56
【问题描述】:

请解释:

  1. 第三个要点
  2. 第 5 行(粗体)
  3. 倒数第二行

【问题讨论】:

    标签: java class object interface abstract


    【解决方案1】:

    Every class in Java is implicitly (or explicitly) a sub type of java.lang.Object.

    Object 类是所有其他类的超类(第 8.1.4 节)。

    因此,您可以在任何类类型的任何变量上调用Object 中声明的任何方法。

    String var = ...;
    var.hashCode();
    

    interface 类型变量也必须如此

    SomeInterface var = ...;
    var.hashCode();
    

    因此,interface 必须隐式声明(如abstractjava.lang.Object 中声明的那些方法。

    你不能重写final方法,但是一个接口声明的方法必须在子类型中实现,所以如果接口声明一个在@987654332中声明为final的方法会抛出编译时错误@。

    接口可以在其主体中声明类、接口和字段。如果子接口声明了任何具有相同名称的接口,那么它将隐藏这些接口。因此它不会继承它们。

    例如,

    public static void main(String[] args) throws Exception {
        System.out.println(Parent.answer);
        System.out.println(Child.answer);
    }
    
    interface Parent {
        int answer = 42;
    }
    
    interface Child extends Parent {
        int answer = 0;
    }
    

    打印

    42
    0
    

    无法从Child 引用中获取Parent 的值。

    【讨论】: