2014-01-31 2 views

ответ

2

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

Класс Object является su perclass (§8.1.4) всех других классов.

Из-за этого вы можете вызывать любой метод, объявленный в Object, для любой переменной любого типа класса.

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

Это должно быть верно для interface переменных типа, а также

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

По этой причине, interface должен неявно объявить (как abstract) этих методов, объявленных в java.lang.Object.

Вы не можете переопределить final метод, но интерфейс объявляет методы, которые должны быть реализованы в подтипах, так будет брошенных компиляции ошибки времени, если интерфейс объявляет метод, который объявлен как 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 

нет никакого способа, чтобы получить значение из Child ссылки Parent «ы.

Смежные вопросы