重写具体方法是否确实有代码异味?因为我认为您需要重写具体方法:
public class A{
public void a(){
}
}
public class B extends A{
@Override
public void a(){
}
}
可以重写为
public interface A{
public void a();
}
public class ConcreteA implements A{
public void a();
}
public class B implements A{
public void a(){
}
}
如果B要在A中重用a(),则可以重写为:
public class B implements A{
public ConcreteA concreteA;
public void a(){
concreteA.a();
}
}
不需要继承来覆盖该方法,是真的吗?
virtual
关键字来支持替代。因此,该语言的细节使问题变得(或更少)模棱两可。
final
修饰符确实存在于此类情况。如果该方法的行为不适合重写,则将其标记为final
。否则,期望开发人员选择覆盖它。