2016-02-25 6 views
2

Мы знаем, что по умолчанию каждый класс наследует в конечном счете от класса java.lang.Object, поэтому методы, такие как toString, легко доступны для каждого класса. Таким образом, общий класс эффективно следующим образом:Класс без java.lang.Object как суперкласс

public class Foo extends java.lang.Object { 

public Foo() {super(); } 
} 

Однако, это вообще возможно создать класс, который не автоматически наследует от Object класса, и, таким образом, не имеет суперкласса? И если да, каков будет эффект?

+2

No и поэтому nil. Ваш вопрос воплощает противоречие в терминах. Любой класс наследует, в конечном счете, от 'java.lang.Object', или нет, и он это делает. – EJP

ответ

3

Мы не можем написать класс без java.lang.object как суперкласс. Компилятор автоматически расширяет класс объекта. Только сам класс объекта и интерфейсы - это те, которые не расширяют класс объекта.

2

Нет, это невозможно. От documentation:

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

1

Я не верю, что вы можете иметь класс, который не наследует Object. Цитируя Object as a Superclass ..

Класс объектов, в пакете java.lang, сидит на вершине дерева иерархии класса. Каждый класс является потомком, прямым или косвенным, класса Object. Каждый класс, который вы используете или записываете, наследует методы экземпляра объекта. Вам не нужно использовать какой-либо из этих методов: , но, если вы решите это сделать, вам может потребоваться переопределить их кодом , который относится к вашему классу.

В тех случаях, когда наследование явно не указано, оно неявно указано. Теперь наследование, очевидно, не образует цикл. Класс Object является единственным, который никого не наследует, это вершина иерархии.

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