接口:Java语言规范

时间:2014-01-31 17:18:09

标签: java class object interface abstract

JLS Java SE 7 : 9.2 请解释一下:

  1. 第3点要点
  2. 第5行(粗体)
  3. 第二行

1 个答案:

答案 0 :(得分:2)

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方法,但是接口声明必须在子类型中实现的方法,因此如果接口声明一个声明为{{1}的方法,则会抛出编译时错误} final

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

例如,

java.lang.Object

打印

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 引用中获取Parent的值。