Dlaczego interfejsy rozszerzają obiekt zgodnie z formatem pliku klasy?

Dlaczego specyfikacja JVM stwierdza, że ​​interfejsy muszą miećsuper_class zjava/lang/Object, mimo że interfejsy się nie rozszerzająjava/lang/Object?

Mam na myśli szczególnie§4.1 specyfikacji JVM, gdzie jest napisane:

W przypadku interfejsu wartość elementu super_class musi zawsze być prawidłowym indeksem w tabeli constant_pool. Pozycja constant_pool w tym indeksie musi być strukturą CONSTANT_Class_info reprezentującą obiekt klasy.

jeszcze w§9.2 JLS mówi, że interfejsy nie rozszerzają Object. Zamiast tego deklarowana jest niejawnie utworzona metoda abstrakcyjna, która pasuje do każdej metody publicznej w klasie Object:

Jeśli interfejs nie ma bezpośrednich superinterfejsów, wówczas interfejs niejawnie deklaruje publiczną abstrakcyjną metodę członka m z podpisem s, zwraca typ r i zgłasza klauzulę t odpowiadającą każdej metodzie instancji publicznej m z sygnaturą s, zwrotem r i rzuca klauzulę t zadeklarowany w Object, chyba że metoda z tym samym podpisem, tym samym typem powrotu i zgodną klauzulą ​​rzutowania jest jawnie zadeklarowana przez interfejs.

questionAnswers(2)

yourAnswerToTheQuestion