Javaで基底クラスのメソッド中から派生クラスのメソッド呼び出し

基底クラスのメソッドから呼び出されるメソッドを派生クラスでオーバーライドすると、基底クラスのメソッド内から派生クラスのメソッドを呼び出すことが出来る。

public class MainClass {
	public class Parent {
		String msg = "Parent";
		
		public String getMsg() { // privateは×
			return msg;
		}
		
		void echo(){
			System.out.println(getMsg()+":"+msg);
		}
	}
	
	class Child extends Parent {
		String msg = "Child";	// 上書きしてもecho()中のmsgに影響なし

		public String getMsg() {
			return msg;
		}
	}

	void method() {
		Parent o = null;
		o = new Parent();
		o.echo();
		o = new Child();
		o.echo();
	}
	
	public static void main(String[] args) {
		new MainClass().method();
	}
}

--

実行結果
Parent:Parent
Child:Parent

出来るはずと思って試して出来なかった記憶があったけど、やっぱり出来たので忘れないようにメモ。