Сомнение наследования Java - PullRequest
2 голосов
/ 30 января 2010
  1. Класс в Java не может расширять более одного класса.

  2. Каждый класс в Java расширяет java.lang.Object.

  3. От 1 и 2: любой класс в Java не может расширять любой другой класс, кроме java.lang.Object.

Что не так в этом выводе?

Ответы [ 4 ]

7 голосов
/ 30 января 2010

Вы можете продлить только один класс за раз. Но A может расширяться B может расширяться C и т. Д.

4 голосов
/ 30 января 2010

Чтобы расширить сказанное Тангенсом:

Для номера 2 вместо этого следует читать:

Каждый класс, который явно не объявить класс, который расширяет расширяет Объект

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

Другая часть этого заключается в том, что наследование действительно представляет собой цепочку - у вас есть все свойства вашего родителя и их родителя, а также родителя их родителя и т. Д. Поскольку вершиной этой иерархии всегда является Object, вы должны на одном уровне или другой, расширить Object.

2 голосов
/ 30 января 2010

Правильные высказывания:

  1. Класс в Java не может напрямую расширять более одного класса.

  2. Каждый класс в Java расширяет java.lang.Object, прямо или косвенно.

1 голос
/ 30 января 2010

Наследование это дерево. Класс может НЕПОСРЕДСТВЕННО расширять один класс, но этот класс может расширять другой, который расширяет другой и т. Д. Таким образом, вы можете сказать, что A расширяет Object, B расширяет A, C расширяет B и т. Д. C наследуется от Object косвенно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...