【发布时间】:2017-01-25 05:06:35
【问题描述】:
(我是一名新手开发人员,仍在学习最佳实践和 java - 任何帮助/指导将不胜感激,谢谢!)
假设我有以下情况:
-
ClassA扩展抽象ClassB扩展抽象ClassC。 -
ClassD扩展抽象ClassE扩展抽象ClassF它扩展了抽象ClassC。
[ClassC是父类]
其中ClassA 和ClassD 具有一组相同的属性、getter 和setter。
我想避免代码重复(属性、getter、setter)。我还想避免编写不同的方法 doSomething(ClassA class, ...) 和 doSomething(ClassD class, ...),它们除了参数类型之外都相同。
如果这两个类直接继承自 ClassC,我会让它们扩展一个包含所有 getter、setter 和属性的类,并将该类型传递给方法 doSomething(..)。由于ClassA 和ClassD 不能扩展多个类,那么处理这种情况的最佳方法是什么?
【问题讨论】:
-
在java中你可以使用interfaces。
-
你有一个具体的例子来说明为什么你会允许交互图变得这么深吗?
-
所以 D 是 E 是 F 是 C。这有点过多地使用继承。
-
考虑使用委托而不是继承。也就是说,
Ahas aB关系通常可以解决Ais aB等可以解决的所有相同问题。 -
你可以使用组合代替继承
标签: java abstract-class multiple-inheritance extends