Java super關(guān)鍵字的用法詳解
super關(guān)鍵字作用:在子類內(nèi)部調(diào)用父類對(duì)象
基礎(chǔ)語法:
1.在類的繼承中,當(dāng)子類繼承了父類, 在構(gòu)造子類的時(shí)候,一定要先幫助父類進(jìn)行構(gòu)造;
2. 調(diào)用super()必須寫在子類構(gòu)造方法的第一行,以保證在執(zhí)行任何動(dòng)作前,對(duì)象已經(jīng)完成了初始化,否則編譯不通過。每個(gè)子類構(gòu)造方法的第一條語句,都是隱含地調(diào)用super(),如果父類沒有這種形式的構(gòu)造函數(shù),那么在編譯的時(shí)候就會(huì)報(bào)錯(cuò)。
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)造方法會(huì)默認(rèn)隱式的在第一行先調(diào)用父類無參數(shù)構(gòu)造方法,所以super()無需手動(dòng)進(jìn)行調(diào)用;
public class Father{ int id; public Father(){ System.out.println("父類構(gòu)造方法"); } } public class Son extends Father{ public Son(){ //super(); //系統(tǒng)會(huì)默認(rèn)生成,可有可無 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í)因?yàn)楦割愔袥]有無參數(shù)構(gòu)造方法,所以子類繼承父類時(shí)會(huì)報(bào)錯(cuò),這時(shí)就需要我們手動(dòng)的調(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); //手動(dòng)調(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于SpringBoot解決CORS跨域的問題(@CrossOrigin)
這篇文章主要介紹了基于SpringBoot解決CORS跨域的問題(@CrossOrigin),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01Servlet和Filter之間的區(qū)別與聯(lián)系
這篇文章主要介紹了Servlet和Filter之間的區(qū)別與聯(lián)系的相關(guān)資料,需要的朋友可以參考下2016-05-05解決spring 處理request.getInputStream()輸入流只能讀取一次問題
這篇文章主要介紹了解決spring 處理request.getInputStream()輸入流只能讀取一次問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09ThreadLocal原理介紹及應(yīng)用場(chǎng)景
本文詳細(xì)講解了ThreadLocal原理介紹及應(yīng)用場(chǎng)景,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12java 字符串相減(很簡(jiǎn)單的一個(gè)方法)
本篇文章是對(duì)java中關(guān)于字符串相減的一個(gè)簡(jiǎn)單的方法進(jìn)行了介紹,需要的朋友參考下2013-07-07SpringBoot快速整合SpringSecurity的詳細(xì)步驟(新手都會(huì)!)
日 Spring Security 是針對(duì)Spring項(xiàng)目的安全框架,也是Spring Boot底層安全模塊默認(rèn)的技術(shù)選型,他可以實(shí)現(xiàn)強(qiáng)大的Web安全控制,下面這篇文章主要給大家介紹了關(guān)于SpringBoot快速整合SpringSecurity的詳細(xì)步驟,需要的朋友可以參考下2023-03-03詳解java調(diào)用存儲(chǔ)過程并封裝成map
這篇文章主要介紹了詳解java調(diào)用存儲(chǔ)過程并封裝成map的相關(guān)資料,希望通過本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09