java - 当对象被其父类(super class)引用时,有什么方法可以访问子对象的变量吗?

标签 java extends

当对象被其父类引用时,除了将对象强制转换为子类之外,还有其他方法可以访问子对象的变量吗?

class parent{
   int parentData;
}

class child extends parent{
   int childData;
}

parent obj =new child();
obj.childData =10 ;            //is getting error
((child )obj).childData=10;    // is working fine

有没有其他方法可以访问父类指向子类对象的子类变量?

场景

如果我的父类有 2-3 个子类,它们与父类只有一个变量不同,我试图用父类引用所有子类对象。在某些时候我需要获取子变量我应该怎么做?我需要重新设计吗?

最佳答案

父类应该只包含所有子类共有的行为。

如果您尝试在父类中实现的确实是常见行为,您可能需要查看 Template method pattern .

如果您要实现的是子类的不同行为,请不要试图将其硬塞到父类中,而应在子类中实现。如果这些实现共享公共(public)部分,您可以将其提取到父类或辅助类中的公共(public)方法。

关于java - 当对象被其父类(super class)引用时,有什么方法可以访问子对象的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26271846/

相关文章:

android - Android 中 "Java class extends" "AppcompatActivity"与 "Activity"与 "ActionBar"之间的区别?

java - 安装 libfprint 并使用 Jlibfprint 包装

java - 触摸事件后重绘 RecyclerView

java - Spring - I18n - 通过静态类访问 MessageSource?

javascript - 从 Typescript 1.6.2 中的内置数组扩展的类在使用 [] 运算符时不会更新长度

java - 获取对象实例的原始类

java - 使用 java 和正则表达式查找最后一次出现的位置

java - 如何解决eclipse错误源未找到

java - 传递多个类( Class<? extends foo> 接口(interface)和抽象类)

java - Java中没有 "extends"关键字的继承