假设我有像图中所示的类层次结构。假设我需要包含一个方法doThis()
,该方法在类C
和D
中具有不同的实现。但是类B
不需要实现此方法。
我是否应该在类A
中声明合同并在类B
中提供一个空实现,或者让另一个抽象类X
扩展A
并通过{扩展{ {1}}和C
?
感谢
答案 0 :(得分:3)
请勿将其放入class A
。使用由需要它的人实现的interface
。
答案 1 :(得分:2)
如果只有A的子类将使用该方法:
创建另一个扩展A的抽象类并添加方法。
如果您打算在不同的班级类型中实施该方法:
创建一个声明方法的接口,然后C,D也应该实现该接口。
答案 2 :(得分:1)
创建一个名为“doable”的界面。让你的C和D类实现这一点。
public interface Doable {
public void doThis();
}
public class D implements Doable { /*implementations*/ }
public class C implements Doable { /*implementations*/ }
答案 3 :(得分:0)
如果可以避免,请不要将其放入A.
无法根据您提供给我们的信息确定最佳解决方案。它取决于类和方法的上下文和含义。