java - 为什么在面向对象的编程中,要在变量中实例化对象的父类(super class)和子类?

标签 java oop

例如: ParentObj A = new ChildObj(); ((ChildObj) A).childMethod();

我在面向对象编程中看到很多这样的实例,将 ChildObj 声明为 ChildObj A = new ChildObj() 会更容易吗?而不是使用父对象作为对象创建的启动器?

此示例对于任何面向对象编程有何用例?

A对象是这个声明中的ChildObj还是ParentObj?

是否有性能提升之类的,比如这样做,或者如果有的话,它是一个用例基础的东西?

在这里谢谢菜鸟。

最佳答案

这是我个人的观点,而且大多数情况下,这种声明没有用例,例如

ParentObj A = new ChildObj();

在下面的情况下,我们使用将子对象隐藏在父引用下

  • 我们不知道对象是如何初始化的
  • 我们不知道实际的子类详细信息
  • 我们有同一个父类的多个子类,我们只想专注于重写的函数
  • 我们受契约(Contract)约束,只使用履行契约(Contract)的功能(接口(interface)场景)

这些是一些用例。

关于java - 为什么在面向对象的编程中,要在变量中实例化对象的父类(super class)和子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41568711/

相关文章:

java - 如何在不知道标题的情况下使用java读取csv文件?

java - 将 java 文件转换为 play.db.jpa.Blob

java - 通过扭转 @XmlElement 重命名的影响来解码 json?

连接到 MySQL 数据库的 Python 脚本 - 代码作为程序脚本运行,在 OOP 重构后失败

java - 我如何知道我在点击什么 Recyclerview - Firebase 删除数据

java - 检索触发器生成的主键 (Java)

java - 在实例化抽象类时,我的 OOP 设计是否存在缺陷?

Pythonic 嵌套 for - Python 中的循环

oop - Coldfusion组件可以共享方法而不是同一个父类(super class)的后代吗

c# - 从父类继承而无需重新实现父类的子类接口(interface)