gpt4 book ai didi

java - 转换为父类型——Java

转载 作者:行者123 更新时间:2023-11-30 06:23:46 25 4
gpt4 key购买 nike

这更像是一个验证:

将子对象转换为父类型是否有任何的好处?

假设我有两个类父级子级Child 正在扩展 Parent

有什么区别吗代码

Parent p = new Child();

Parent p = (Parent) new Child();

?

p 在调用它的任何一个时会有什么不同的行为吗?方法或以任何方式访问其任何一个成员?

在我看来,两者是相同的,这里的转换是多余的。

//==================================

编辑:作为开发者,我一直在寻找控制权,关于调用哪个方法 -- ChildParent 的方法,来自 Child 外部。

因此,编码人员将寻求调用Parent 的方法不管该方法是否在子类中被重写。那是,子类的重写方法将被绕过,并且该方法的Parent 实现将是在 Child 对象上调用。

最佳答案

不,无论您调用该方法的引用类型如何,该对象的行为都是相同的。

这是设计使然 - 它允许子类覆盖其父类(super class)的方法。

在您的示例中,赋值前的向上转换无效 - 它会作为赋值的一部分隐式发生。

Parent p = (Parent) new Child();

调用者不能强制对象忽略其方法覆盖。这是一件的事情。否则, child 永远无法执行自己的内部不变量。

如果你想让调用者选择是调用父方法还是子方法,那么你的API可以提供两种方法。 parent 和 child 都可以决定如何支持各自。

关于java - 转换为父类型——Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17934097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com