1. 程式人生 > >父子類 執行順序

父子類 執行順序

public class Dervied extends Base {     private String name = "dervied";     //構造方法     public Dervied() {         this.tellName();         this.printName();     }     //子類方法     public void tellName() {         System.out.println("Dervied tell name: " + name);     }     public void printName() {         System.out.println("Dervied print name: " + name);     }     public static void main(String[] args){、         new Dervied();         } } class Base {     private String name = "base";     public Base() {         this.tellName();         this.printName();     }     public void tellName() {         System.out.println("Base tell name: " + name);     }     public void printName() {         System.out.println("Base print name: " + name);     } }

--------------------------------

結果:

Dervied tell name: null Dervied print name: null Dervied tell name: dervied Dervied print name: dervied

結果分析:

1. 在建立子類物件時會先呼叫父類的構造器

2.子類重寫了父類中的tellName()與printName(),相當於將父類的方法完全改變;

所以在執行父類的構造方法時輸出“Dervied tell name:”與“Dervied print name:”由於父類中的name屬性由private,被private修飾的屬性只能在本類中被訪問所以前兩行會輸出null