父类方法如何返回子类类型?这不是违反继承吗?



既然Object类被认为是Java中所有类的基类,那么既然String类是Object类的子类,那么在.toString()方法中它怎么可能有String的返回类型呢?

这难道不是因为父类知道子类就违反了继承吗?

很简单,继承不要求父类对其子类一无所知。

因此,父类引用子类是完全可以的。如果没有这一点,生产任何层次类型的系统都是相当具有挑战性的!

new Object().toString();

String s =(String) new Object();

绝对是两码事。如果你的反对意见与第二条指令有关,那是有道理的:这是一条关于继承的指令,而不是第一条。事实上,这是一个缩小操作,将导致RuntimeException。

好吧,type of是一个检查类类型的操作。。。与继承无关。。。。当您使用.toString()输出对象时,基本上会返回一个String。这就是为什么你这种类型的回报是真的。。。toString()是所有类继承的方法,无论是否有用。

最新更新