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