Если вы на самом деле не пишете extends Object
, компилятор вставит его для вас.
РЕДАКТИРОВАТЬ : Очевидно, я вызвал некоторую путаницу по поводу того, происходит ли на самом деле вставка кода. Я не был полностью уверен в себе, поэтому я провел небольшой эксперимент: создайте следующий класс в файле test.java
:
public class test {}
и скомпилируйте его, затем запустите
javap -c test
чтобы разобрать байт-код. Посмотри, что получится:
Compiled from "test.java"
public class test extends java.lang.Object{
public test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."":()V
4: return
}
Так что да, компилятор действительно фактически вставляет extends java.lang.Object
(или эквивалент байт-кода) в класс.