Java 从存储在超类变量中的子类获取数据

Java 从存储在超类变量中的子类获取数据,java,android,Java,Android,我正在努力理解解决这个问题的最佳方法。假设我们有一个数据模型族,它存储一个Pet变量。我还有一些扩展宠物的类,比如狗、猫、鱼等等。我需要一个宠物列表,但是当我循环时,我需要访问宠物的子类。 我应该在Pet类中有一个存储宠物类型的变量吗?或者我应该使用instanceof?任何帮助都将不胜感激 我需要一个列表,但当我循环通过它时,我需要访问Pet的子类 为什么? 类Pet应该有其所有子类用特殊行为重写的公共方法。使用宠物列表的代码应该只调用那些常用的方法。Instanceof是您的朋友,但如果您最

我正在努力理解解决这个问题的最佳方法。假设我们有一个数据模型族,它存储一个
Pet
变量。我还有一些扩展宠物的类,比如狗、猫、鱼等等。我需要一个宠物列表,但是当我循环时,我需要访问宠物的子类。 我应该在
Pet
类中有一个存储宠物类型的变量吗?或者我应该使用
instanceof
?任何帮助都将不胜感激

我需要一个列表,但当我循环通过它时,我需要访问Pet的子类

为什么?


类Pet应该有其所有子类用特殊行为重写的公共方法。使用宠物列表的代码应该只调用那些常用的方法。

Instanceof是您的朋友,但如果您最终遇到十几个if-Else,我想您应该重新考虑您的设计。通常在这种情况下,您希望迭代
列表
,并访问所有宠物的通用方法/字段,而不是您需要了解的特定宠物的孩子(阅读特定子类型)。