Aのコンストラクターから呼び出すメソッド「say」を持つ基本クラスAがあります。すべての継承可能なクラスは、メソッド「say」をそのまま使用します。ただし、クラスの 1 つでこのメソッドを再定義する必要があります。それはどのように可能ですか?
確かに、基本メソッド「say」を抽象として示すことはできますが、その場合、継承可能なすべてのクラスで同じメソッド「say」をコピーする必要があります。
ベース1を抽象として示さずにメソッドを再定義するだけでは、呼び出されません。
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(){};
}