如果Object
是层次结构中所有类的母亲,那么他如何实现返回子类对象的方法(例如toString
返回String
个对象)?< / p>
答案 0 :(得分:3)
只要子类存在,这不是问题。例如,以下内容有效:
<强> A.java:强>
public class A {
B b;
}
<强> B.java:强>
public class B extends A {
}
答案 1 :(得分:2)
这是一个有趣的观点:Object
类知道它的一个子类,即String
(特别是,声明并实现toString()
方法)。
java语言规范的一部分是所有类都是Object的隐式子类。虽然从技术上来说,一个类引用其子类之一是“糟糕的设计”,但我认为这是一个“边缘案例”,并不值得担心。
答案 2 :(得分:0)
因为toString
上有Object
的默认实现,可确保返回String
实例。由于每个类都是Object
的实例,因此您总是可以免费获得该默认实现,尽管您可以而且应该在子类上实现toString
。
在任何返回另一个类的实例的类中都没有任何阻止方法。你总能做到
return new SomethingElse()
其中SomethingElse
是另一个类。