当对象被其父类引用而不是将对象强制转换为子类时,是否还有其他方法可以访问子对象的变量?
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个子类与父类只有一个变量不同,我试图用父类引用所有子类对象。在某些时候我需要得到子变量我该怎么办?我需要重新设计吗?
答案 0 :(得分:2)
父类应该只包含所有子类共有的行为。
如果您尝试在父类中实现的内容确实是常见行为,您可能需要查看Template method pattern。
如果你正在实现的是与子类不同的行为,不要试图将它变成父类,而是在子类中实现它。如果这些实现共享公共部分,则可以将其提取到父级或辅助类中的常用方法。
答案 1 :(得分:1)
为什么父母开始在java中了解他们的孩子?那是不可能的。