Если 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
- другой класс.