我有一个基类 A,有一个从 A 的构造函数调用的方法“say”。所有可继承的类都像它一样使用方法“say”。但是其中一个类需要重新定义这个方法。这怎么可能?
当然,我可以将基本方法“say”表示为抽象方法,但这样,我必须在所有可继承的类中复制相同的方法“say”。
如果我只是重新定义方法而不将基数表示为抽象,则不会调用它。
public abstract class A(){
public A(){
say(); // <- wanna call this method from heritable class, if its redefined.
}
protected void say(){};
}
public class B extends A(){
public B(){
super();
}
private void say(){};
}
重构 1
public abstract class A(){
public A(){
// constructor methods
}
protected void say(){};
protected void executeSay(){
say();
}
}
public class B extends A(){
public B(){
super();
executeSay();
}
@Override
protected void say(){};
}