请解释一下:
答案 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
必须隐式声明(abstract
)java.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
的值。