Как не расширять класс Object в Java? - PullRequest
0 голосов
/ 19 марта 2020

По умолчанию каждый класс в Java расширяет класс Object. (Таким образом, всегда происходит одиночное наследование)

Существует ли какой-либо класс, который не расширяет класс Object? (например, int может быть экземпляром класса int, но не объектом)

Можем ли мы как-то создать наш собственный класс, который не расширяет Object? Может быть, изменив окончательный код javac, чтобы он не расширял класс Object, и, возможно, создадим наш собственный класс, чтобы превзойти то, что конструктор класса объектов делает как минимум, чтобы избежать ненормального поведения?

1 Ответ

3 голосов
/ 19 марта 2020

int - примитив, поэтому мы не можем сказать, что он расширяет что-либо.

Когда речь заходит о вашем вопросе:

Есть ли класс, который не расширяет класс Object?

Вы ответили на него буквально строкой выше:

каждый класс в Java расширяет класс Object

PS: Мы не можем сказать, что существует двойное наследование, потому что класс расширяет Object и некоторые другой класс, потому что этот «другой класс» также расширяет Object. Фактически, класс является подтипом всех его супертипов, например:

HashMap m = new LinkedHashMap();
AbstractMap m = new LinkedHashMap();
Object m = new LinkedHashMap();

Параметры типа для краткости опущены.

Редактировать: ссылаясь на обсуждение того, что является объектом и что такое нет, JLS § 4.3.3 дает ответ:

Объект является экземпляром класса или массивом.

...