JavaDoc говорит:
Класс Object
является корнем иерархии классов. ...
Если класс не расширяет какой-либо другой класс, декальцируя его с помощью ключевого слова extends
, он расширяется, хотя и неявно, из Object
.
Документация гласит:
В отсутствие какого-либо другого явного суперкласса каждый класс
неявно подкласс Object.
См. Пример 8.1.4-1" Прямые суперклассы и подклассы " в JLS, глава 8.1.4
Это показывает, что class Point { int x, y; }
" является прямым подклассом Object "
Более того, в документации сказано:
Классы могут быть получены из классов, которые получены из классов, которые
получены из классов и т. д., и в конечном итоге получены из
высший класс, Object
. Говорят, что такой класс происходит от всех
классы в цепочке наследования простираются до Object
.
В JLS это кратко и формально:
Отношение подкласса является транзитивным замыканием прямого
отношение подкласса.
Таким образом, класс Object
является суперклассом всех классов.
Но в документации также сказано:
За исключением Object
, который не имеет суперкласса, каждый класс имеет один и только один прямой суперкласс (одиночный
наследование).
Продолжение с примером a class ColoredPoint extends Point { int color; }
" является прямым подклассом класса Point
. ". По транзитивным отношениям это (не прямой) подкласс класса Object
.
Подведение итогов:
Object
является либо прямым суперклассом, либо транзитивными отношениями последним суперклассом любого другого класса.
Отвечая на вопросы:
- Java не поддерживает множественное наследование : обеспечивает единичное наследование транзитивным способом. Каждый класс распространяется только на одну суперкассу.
- Как это соотношение : класс
Parent
соответствует классу Point
, а класс Child
- классу ColoredPoint
примера JLS. Только Опция 2 показывает это соотношение.