Java super關(guān)鍵字的用法詳解
super關(guān)鍵字作用:在子類內(nèi)部調(diào)用父類對象
基礎(chǔ)語法:
1.在類的繼承中,當子類繼承了父類, 在構(gòu)造子類的時候,一定要先幫助父類進行構(gòu)造;
2. 調(diào)用super()必須寫在子類構(gòu)造方法的第一行,以保證在執(zhí)行任何動作前,對象已經(jīng)完成了初始化,否則編譯不通過。每個子類構(gòu)造方法的第一條語句,都是隱含地調(diào)用super(),如果父類沒有這種形式的構(gòu)造函數(shù),那么在編譯的時候就會報錯。
super關(guān)鍵字的三種用法:
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() { //調(diào)用父類的成員屬性 System.out.println(name); //student 直接使用,優(yōu)先使用局部變量 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() { //調(diào)用父類的成員方法 super.help(); System.out.println(this.name+"Student"); //Student this調(diào)用的式同類中的變量 } } public class s { public static void main(String[] args) { Student p = new Student("Test"); p.help(); } } //Test Person //student Student
3. super():調(diào)用父類中的構(gòu)造方法
3.1.1 隱式調(diào)用父類無參數(shù)構(gòu)造方法super()
如果父類是無參構(gòu)造,那么子類的構(gòu)造方法會默認隱式的在第一行先調(diào)用父類無參數(shù)構(gòu)造方法,所以super()無需手動進行調(diào)用;
public class Father{ int id; public Father(){ System.out.println("父類構(gòu)造方法"); } } public class Son extends Father{ public Son(){ //super(); //系統(tǒng)會默認生成,可有可無 System.out.println("子類構(gòu)造方法"); } } public class Test{ public static void main(String[] args){ Son s = new Son(); } }
//print:
//父類構(gòu)造方法
//子類構(gòu)造方法
3.1.2 顯式調(diào)用父類有參數(shù)構(gòu)造方法super(id)
如果父類是含參構(gòu)造,那么此時因為父類中沒有無參數(shù)構(gòu)造方法,所以子類繼承父類時會報錯,這時就需要我們手動的調(diào)用父類的有參構(gòu)造方法super(id);
public class Father{ int id; public Father(int id){ System.out.println("父類構(gòu)造方法"); } } public class Son extends Father{ public Son(int id){ super(id); //手動調(diào)用父類的有參構(gòu)造方法 System.out.println("子類構(gòu)造方法"); } } public class Test{ public static void main(String[] args){ Son s = new Son(1); } }
//print:
//父類構(gòu)造方法
//子類構(gòu)造方法
到此這篇關(guān)于Java super關(guān)鍵字的用法詳解的文章就介紹到這了,更多相關(guān)Java super內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于SpringBoot解決CORS跨域的問題(@CrossOrigin)
這篇文章主要介紹了基于SpringBoot解決CORS跨域的問題(@CrossOrigin),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01Servlet和Filter之間的區(qū)別與聯(lián)系
這篇文章主要介紹了Servlet和Filter之間的區(qū)別與聯(lián)系的相關(guān)資料,需要的朋友可以參考下2016-05-05解決spring 處理request.getInputStream()輸入流只能讀取一次問題
這篇文章主要介紹了解決spring 處理request.getInputStream()輸入流只能讀取一次問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09SpringBoot快速整合SpringSecurity的詳細步驟(新手都會!)
日 Spring Security 是針對Spring項目的安全框架,也是Spring Boot底層安全模塊默認的技術(shù)選型,他可以實現(xiàn)強大的Web安全控制,下面這篇文章主要給大家介紹了關(guān)于SpringBoot快速整合SpringSecurity的詳細步驟,需要的朋友可以參考下2023-03-03