java學習——super和this
阿新 • • 發佈:2018-11-11
構造器(建構函式)
子類不能繼承父類的構造器(構造方法或者建構函式),如果父類的構造器帶有引數,則必須在子類的構造器中顯式地通過 super 關鍵字呼叫父類的構造器並配以適當的引數列表。
如果父類構造器沒有引數,則在子類的構造器中不需要使用 super 關鍵字呼叫父類構造器,系統會自動呼叫父類的無參構造器。
package test_script; class SuperClass{ SuperClass(){ System.out.println("SuperClass()"); } SuperClass(int n){ System.out.println("SuperClass(int n)"); } } class SubClass extends SuperClass{ private int n; SubClass(){ super(300); System.out.println("SubClass()"); } SubClass(int n){ System.out.println("SubClass(int n):"+n); this.n=n; } } public class TestSuperSub { public static void main(String[] args){ SubClass sc=new SubClass(); SubClass sc1=new SubClass(200); } }
執行結果:
SuperClass(int n) //通過super(300)呼叫了父類的有參構造器
SubClass()
SuperClass() //系統自動呼叫了父類的元參構造器
SubClass(int n):200
2、super和this:
super關鍵字:我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前物件的父類。
this關鍵字:指向自己的引用。
package test_script; class Animal{ void eat(){ System.out.println("animal:eat"); } } class joy extends Animal{ void eat(){ System.out.println("dog:eat"); } void eatTest(){ this.eat(); //指向自己的引用 super.eat();//我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前物件的父類 } } public class Test { public static void main(String[] args){ joy j=new joy(); j.eatTest(); } }
執行結果:
dog:eat
animal:eat