Java 子クラスでOverrideされたメソッドは呼ばれなくなる
子クラスで親クラスのメソッドをOverrideすると、子クラスのインスタンスで、親クラスの他のメソッドからOverrideされたメソッドを呼び出した場合に、Override後のメソッドが呼び出される。
もうちょっと、端的に書くと、、
Overrideした場合、Overrideされた側は利用されなくなる。
、、まぁ、変えたいからOverrideするわけなので、当然の挙動。
とか言いつつも、不安になっていつも確認してしまう。
デザインパターンの、テンプレートメソッドって正にコレ。
public class ExTester { public static void main(String[] args){ A a = new A(); Basic b = new A(); System.out.println("a=" + a.getALL()); System.out.println("b=" + b.getALL()); System.out.println("a1=" + a.getALL1()); System.out.println("b1=" + b.getALL1()); } } class A extends Basic { @Override String getType(){ return "A"; } } class Basic { String getType(){ return "basic"; } public String getALL(){ return getType(); } public String getALL1(){ return this.getType(); } } ## result a=A b=A a1=A b1=A
ちなみに、子クラス側から親クラスのメソッドを呼び出すことは可能
Class A extends Basic { public getTypeS(){ return super.getType(); } }