java 實例化時調用了抽象方法或者class里面某個方法,如果子類有重寫改方法,實際運行的是子類重寫方法
package auto.test; //抽象父類 public abstract class Father { public Father() { // TODO Auto-generated constructor stub oupPut(); //實例化時調用,子類有,就調用子類方法,子類沒有,就調用父類方法 } //父類抽象方法,讓子類重寫 public void oupPut(){ System.out.println("from Father class"); }; } //子類A class ChildA extends Father{ //重寫父類方法 @Override public void oupPut(){ System.out.println("from childA class"); } } // 子類B class ChildB extends Father { //重寫父類方法 @Override public void oupPut(){ System.out.println("from childB class"); } } class ChildC extends Father { //沒有重寫父類方法 } 執行測試類 public class TestClaass { public TestClaass() { // TODO Auto-generated constructor stub } public static void main(String arg[]){ Father a = new ChildA(); Father b = new ChildB(); Father c = new ChildC(); } }
運行結果:
from childA class
from childB class
from Father class