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()可以用於調用直接父類構造函數