关于子类和接口的Java最佳实践

关于子类和接口的Java最佳实践,java,class,inheritance,interface,extends,Java,Class,Inheritance,Interface,Extends,我有四个不同的班,分别是A班、B班、C班和p班, 类A、B和C各有一个子类,名为类X、类Y和类Z 类X、Y和Z将处理来自类p的两个事件, 因此有一个名为interface I的监听器接口,方法是G和H, 十、 Y和Z还实现了接口I 问题是70%的事件处理逻辑方法G、H在X、Y和Z中是相同的, 我想把它们拿出来,但我应该把它放在哪里呢 现在,我为相同的处理逻辑创建了一个新类,并保持X、Y和Z实现I,在方法G和H中调用新类,但是有更好的方法吗?哪个版本的Java?在Java 8中有一种干净的方法,这

我有四个不同的班,分别是A班、B班、C班和p班, 类A、B和C各有一个子类,名为类X、类Y和类Z

类X、Y和Z将处理来自类p的两个事件, 因此有一个名为interface I的监听器接口,方法是G和H, 十、 Y和Z还实现了接口I

问题是70%的事件处理逻辑方法G、H在X、Y和Z中是相同的, 我想把它们拿出来,但我应该把它放在哪里呢


现在,我为相同的处理逻辑创建了一个新类,并保持X、Y和Z实现I,在方法G和H中调用新类,但是有更好的方法吗?

哪个版本的Java?在Java 8中有一种干净的方法,这在早期版本中是不存在的。应该是SE6/7,实际上我正在开发Android。在这种情况下,您所做的可能很好。将您的新类保留为事件处理程序,并在需要时为其提供对实现I的引用。我明白了,谢谢。但是如果Java8呢?在Java8中,您可以为接口方法提供默认实现。我不喜欢这个功能有几个原因。它有效地模糊了接口和抽象类之间的区别,并向Java引入了多重继承及其所有相关问题。但我认为您的用例是对它的合理使用。