Java super關鍵字的用法詳解
super關鍵字作用:在子類內部調用父類對象
基礎語法:
1.在類的繼承中,當子類繼承瞭父類, 在構造子類的時候,一定要先幫助父類進行構造;
2. 調用super()必須寫在子類構造方法的第一行,以保證在執行任何動作前,對象已經完成瞭初始化,否則編譯不通過。每個子類構造方法的第一條語句,都是隱含地調用super(),如果父類沒有這種形式的構造函數,那麼在編譯的時候就會報錯。
super關鍵字的三種用法:
1. super.成員變量
class Person{ public String name; //成員變量 public Person(String name) { this.name = name; } } class Student extends Person{ String name = "student"; public Student(String name) { super(name); } public void help() { //調用父類的成員屬性 System.out.println(name); //student 直接使用,優先使用局部變量 System.out.println(super.name); // B 直接使用父類的成員變量 } } public class s { public static void main(String[] args) { Student p = new Student("B"); p.help(); } }
2. super.成員方法
class { public String name; public Person(String name) { this.name = name; //Test } public void help() { System.out.println(this.name+"Person"); } } class Student extends Person{ String name = "student"; public Student(String name) { super(name); //Test } public void help() { //調用父類的成員方法 super.help(); System.out.println(this.name+"Student"); //Student this調用的式同類中的變量 } } public class s { public static void main(String[] args) { Student p = new Student("Test"); p.help(); } } //Test Person //student Student
3. super():調用父類中的構造方法
3.1.1 隱式調用父類無參數構造方法super()
如果父類是無參構造,那麼子類的構造方法會默認隱式的在第一行先調用父類無參數構造方法,所以super()無需手動進行調用;
public class Father{ int id; public Father(){ System.out.println("父類構造方法"); } } public class Son extends Father{ public Son(){ //super(); //系統會默認生成,可有可無 System.out.println("子類構造方法"); } } public class Test{ public static void main(String[] args){ Son s = new Son(); } }
//print:
//父類構造方法
//子類構造方法
3.1.2 顯式調用父類有參數構造方法super(id)
如果父類是含參構造,那麼此時因為父類中沒有無參數構造方法,所以子類繼承父類時會報錯,這時就需要我們手動的調用父類的有參構造方法super(id);
public class Father{ int id; public Father(int id){ System.out.println("父類構造方法"); } } public class Son extends Father{ public Son(int id){ super(id); //手動調用父類的有參構造方法 System.out.println("子類構造方法"); } } public class Test{ public static void main(String[] args){ Son s = new Son(1); } }
//print:
//父類構造方法
//子類構造方法
到此這篇關於Java super關鍵字的用法詳解的文章就介紹到這瞭,更多相關Java super內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java基礎之方法重寫詳解
- 淺析JAVA中的內存結構、重載、this與繼承
- Java中超詳細this與super的概念和用法
- 一篇文章帶你深入瞭解Java對象與Java類
- 詳解Java的構造方法及類的初始化