gpt4 book ai didi

java - 使用 instanceof 与将 isSomething() 添加到基类

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:13 25 4
gpt4 key购买 nike

假设我有这个类层次结构:

Animal <-- FourLegged <-- Dog
Animal <-- FourLegged <-- ....

Animal <-- ThreeLegged <-- ... (what has 3 legs?)

Animal <-- TwoLegged <-- Chicken
Animal <-- TwoLegged <-- ...

(忘记了四足动物和两足动物的科学术语是什么。但这不是重点,对吧?:))

如果我有一个 Animal 对象,并且我需要知道它是 FourLegged 还是 TwoLegged,我通常会执行 animalObject instanceof FourLegged

这比向 Animal 类添加一堆 isFourLegged()isThreeLegged()isTwoLegged() 慢吗?

(我想知道性能影响。这不是设计练习。因此,如果您不会浪费时间建议如何重写该类,我将不胜感激)

编辑有些人建议添加“getNumberOfLegs()”,在这个具体示例中这是完全合理的。但假设重点不是要知道腿的数量,而是要获取这是什么类型的动物。

最佳答案

如果您的子类没有添加任何行为,而只是指定腿数的一种方式,那么您应该使用 this refactoring称为用字段替换子类。 => 不再需要子类。

否则,添加一个多态方法,例如:numberOfLegs(),由每个 Animal 的子类实现。

关于java - 使用 instanceof 与将 isSomething() 添加到基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com