Если Object является матерью всех классов в иерархии, как он может реализовать метод, возвращающий объект дочернего класса (например, toString возвращает объект String)?
Как объекты Object возвращают строки? (Ява)
Ответ 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 - другой класс.