1
2
最好的方法是在Animal中定义抽象方法,并在子类中重写它。这就是多态性的工作原理。 不需要过载。
:
输出 :
____更新_1 我想补充一些意见,为什么重载这些方法不是一个好主意。
但它不会像你期望的那样工作。它会呼叫
对于循环的所有迭代,参数的编译时类型为
这可以通过以下方式解决:
此外,一个安全、保守的政策是永远不要出口两个过载
例如
|
2
0
你需要在Animal中定义方法,并将其抽象化
|
3
0
你可以这样做:
但是根据你在问题中描述的场景,@J-Alex answer是一个好方法。 |
4
0
我可以告诉你“工厂设计模式”在这里是如何合适的。 定义主类如下:
相信我,如果你能分析一下这里的抽象层次,那就太棒了。 如果你使用更高级别的抽象,你甚至可以去掉这里的类型;你可以阅读《抽象工厂设计》。通过这种方式,您公开了最少的类特性(例如,在这里,您通过将它们直接用于主类中的new来公开Dog和Cat类)。如果你满意,请投赞成票。 |
user7794336 · Java中从列表路由方法调用的最佳方法 7 年前 |
ivme · 用c语言构建封装但可扩展的动画库++ 7 年前 |
zar · 与访问者的复合模式,访问者中的真正内容是什么? 8 年前 |
Thomas Matthews · 使用模板解析虚拟方法 10 年前 |
user35443 · 访问者模式-接口与抽象类 10 年前 |
zpavlinovic · OCaml访问者模式 10 年前 |
user1406062 · 访问者设计模式中的循环依赖[关闭] 12 年前 |
jbcoe · 访问接口的私有继承如何允许可访问对象访问访问私有访问实现? 12 年前 |