当对象被超类引用时,有没有办法访问子对象的变量?

时间:2014-10-09 06:37:12

标签: 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个子类与父类只有一个变量不同,我试图用父类引用所有子类对象。在某些时候我需要得到子变量我该怎么办?我需要重新设计吗?

2 个答案:

答案 0 :(得分:2)

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

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

如果你正在实现的是与子类不同的行为,不要试图将它变成父类,而是在子类中实现它。如果这些实现共享公共部分,则可以将其提取到父级或辅助类中的常用方法。

答案 1 :(得分:1)

为什么父母开始在java中了解他们的孩子?那是不可能的。