java super關(guān)鍵字知識(shí)點(diǎn)詳解
在對(duì)一些父類的調(diào)用上,我們需要借助java中的關(guān)鍵字使用,這就是super關(guān)鍵字,可以歸納為三種方法:作用于類、方法名和構(gòu)造函數(shù)??梢园阉醋鍪鞘褂酶割惖囊粋€(gè)工具,相信大家在之前類的使用中有所接觸。下面我們就super的說明、三種用法、注意事項(xiàng)進(jìn)行說明,然后在實(shí)例中體會(huì)用法。
1.說明
super相當(dāng)于是指代當(dāng)前的對(duì)象的父類,調(diào)用父類的屬性、方法和構(gòu)造方法
2.用法
(1)super.變量/對(duì)象名;
使用這種方法可以直接訪問父類中的變量或?qū)ο?,進(jìn)行修改賦值等操作
(2)super.方法名();
直接訪問并調(diào)用父類中的方法
(3)super();
調(diào)用父類的初始化方法,其實(shí)就是調(diào)用父類中的public xxx()方法,通常第三種指代的是super()的省略寫法,系統(tǒng)會(huì)默認(rèn)添加此句。
特殊情況:如果父類沒有無參的構(gòu)造函數(shù),所以子類需要在自己的構(gòu)造函數(shù)中顯示的調(diào)用父類的構(gòu)造函數(shù),即不能使用系統(tǒng)默認(rèn)的“super()”,而需要顯性寫出super(xxx)
3.注意事項(xiàng)
(1)表示調(diào)用父類的構(gòu)造函數(shù)。也是一個(gè)特殊語法,不是變量,沒有什么類型。
(2)可以在一個(gè)類的非static成員內(nèi)部使用。比如super.method()。
但是,注意,這個(gè)super.method()只是長得跟some_var.method()一樣,一個(gè)語法糖而已。實(shí)質(zhì)上,"super"根本不是一個(gè)變量。
(3)super的另外一個(gè)作用是調(diào)用父類的protected函數(shù)。只有通過"super"這個(gè)魔咒,我們才能操作父類的protected成員,別無它法。
4.實(shí)例
class Person{ private String name; private int age; public Person(String name){ this.name = name; } public Person(String name, int age){ this(name); //this調(diào)用構(gòu)造方法必須放在第一行,這里這樣寫是為了避免代碼重復(fù) this.age = age; } public Person(){ System.out.println("1.Person類的構(gòu)造方法"); } } class Student extends Person{ private String school; public Student(){ super("yy"); System.out.println("Student類的構(gòu)造方法"); } public Student(String school){ this(); //super("yy"); //對(duì)super的調(diào)用必須在構(gòu)造方法的第一行 System.out.println("2.Student類的構(gòu)造方法"); } } public class Day6{ public static void main(String[] args){ Student stu = new Student("beida"); } }
知識(shí)點(diǎn)擴(kuò)展:
java Super 用法詳解
1)有人寫了個(gè)很好的初始化屬性的構(gòu)造函數(shù),而你僅僅想要在其中添加另一些自己新建屬性的初始化,這樣在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù),可以避免重復(fù)的代碼量,減少工作量;
2)在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù)的時(shí)候應(yīng)該用的是同一塊內(nèi)存空間,在默認(rèn)的構(gòu)造函數(shù)中先初始化變量,調(diào)用另一個(gè)的時(shí)候覆寫已經(jīng)初始化的變量的值;
3)整個(gè)調(diào)用的過程和遞歸調(diào)用函數(shù)有點(diǎn)類似,不斷充氣球,直到整個(gè)氣球膨脹起來,不斷的深層遞進(jìn),遇到停止標(biāo)記,逐層的跳出來。
到此這篇關(guān)于java super關(guān)鍵字知識(shí)點(diǎn)詳解的文章就介紹到這了,更多相關(guān)java super關(guān)鍵字是什么內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+thymeleaf找不到視圖的解決方案
這篇文章主要介紹了springboot+thymeleaf找不到視圖的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06mybatis spring配置SqlSessionTemplate的使用方式
這篇文章主要介紹了mybatis spring配置SqlSessionTemplate的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java throw Exception實(shí)現(xiàn)異常轉(zhuǎn)換
這篇文章主要介紹了Java throw Exception實(shí)現(xiàn)異常轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04