Подтвердить что ты не робот

Как объекты Object возвращают строки? (Ява)

Если Object является матерью всех классов в иерархии, как он может реализовать метод, возвращающий объект дочернего класса (например, toString возвращает объект String)?

4b9b3361

Ответ 1

Это интересный момент: класс Object знает об одном из своих подклассов, а именно String (в частности, объявить и реализовать метод toString()).

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

Ответ 2

Это не проблема, пока существует дочерний класс. Например, допустимо следующее:

A.java:

public class A {
    B b;
}

B.java:

public class B extends A {

}

Ответ 3

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

Ничего не мешает методам в любом классе возвращать экземпляры другого класса. Вы всегда можете делать

return new SomethingElse()

где SomethingElse - другой класс.