實例化子類的執行過程

public class People extends Animal {
   //子類無參構造
   public  People(){
    System.out.println("您好");
    }
    //子類有參構造
   public  People(String a){
        System.out.println("你是"+a);
    }
 public static void main(String[] args) {
        People p = new People("dd");
        p.eat();
    }
}
class Animal{
    //父類無參構造
    public Animal(){
        System.out.println("父類無參構造方法");
    }
    //父類有參構造
    public Animal(int i){
        System.out.println("父類有參構造方法");
    }
    public void eat(){
        System.out.println("動物喫東西");
    }
}

一、People 類繼承父類 Animal

1.當new People(); 實類化子類對象時,首先調用父類的無參構造方法,先實例化父類,然後再調用自己的無參構造方法;

2.當new People("張三"); 實類化子類對象時,首先調用父類的無參構造方法,先實例化父類,然後再調用自己的有參構造方法;

3.當new People(); 實類化子類對象時,如果需要指定調用父類的哪個構造方法,可在子類無參構造方法中通過 super();關鍵字調取父類的對應參數的構造方法:當使用super()時則調用父類無參構造,使用super(a,b,c)時則調用父類對應參數的構造方法

4.當new People("張三"); 實類化子類對象時,如果需要指定調用父類的哪個構造方法,可在子類有參構造方法中通過 super();關鍵字調取父類的對應參數的構造方法:當使用super()時則調用父類無參構造,使用super(a,b,c)時則調用父類對應參數的構造方法

 

二、this() 和super()關鍵字

1.this():調取自身對象的構造方法;

 

 (1.)每個類的每個非靜態方法(沒有被static修飾)都會隱含一個this關鍵字,它指向調用這個方法的對象;當在方法中使用本類屬性時,都會隱含地使用this關鍵字,當然也可以明確使用。

          this可以看成是一個變量,它的值就是當前對象的引用

          this關鍵字只能在方法內部使用,表示對“調用方法的那個對象”的引用如果是在同一類中調用另外一個方法,則可以不用寫this,直接調用

         (2.)爲了區分屬性和局部變量,可以通過this關鍵字來調用

         (3.)this關鍵字的用法

             *當類中非靜態方法的參數名與類的某個成員變量名相同時,爲了避免參數作用範圍覆蓋了成員變量的作用範圍,必須明確使用this關鍵字來指定

             *如果某個構造方法的第一條語句具有形式this(...),那麼這個構造方法將調用本類中的其他構造方法

             *如果某個方法需要傳入當前對象,則可以將當前的對象作爲參數傳遞給它
 

2.super():調取父類的構造方法

super代表了父類空間的引用

        (1.)super的作用:

            *子父類存在着同名的成員時,在子類中默認時訪問子類的成員,可以通過super關鍵字指定訪問父類的成員

            *創建子類對象時,默認會先調用父類無參的構造方法,可以通過super關鍵字指定調用父類的構造方法

     (2.)super的用法

              super可以用來引用直接父類的實例變量。

              super可以用來調用直接父類方法。

              super()可以用於調用直接父類構造函數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章