一篇文章教會(huì)你使用Java中的super關(guān)鍵字基本用法
后臺(tái)回復(fù)“Java”即可獲贈(zèng)Java學(xué)習(xí)資料
????前面的文章給大家介紹了Java諸多基礎(chǔ)知識(shí),感興趣的小伙伴記得前往噢:Java基礎(chǔ)入門篇(五)——Java變量類型的轉(zhuǎn)換和運(yùn)算符、Java基礎(chǔ)入門篇(四)——Java變量數(shù)據(jù)類型和基本數(shù)據(jù)類型、Java基礎(chǔ)入門篇(三)——Java常量、變量、Java基礎(chǔ)入門篇(二)——Java注釋、關(guān)鍵字和標(biāo)識(shí)符、Java基礎(chǔ)入門篇(一)——Java虛擬機(jī)和運(yùn)行環(huán)境。接下來開始我們今天的內(nèi)容吧~
一、重寫父類方法
1.什么是重寫父類方法
在繼承關(guān)系中,子類會(huì)繼承父類所定義的方法,當(dāng)在子類中對(duì)繼承方法進(jìn)行一些修改,這就是重寫父類方法。也就是說子類包含父類同名方法。
2.重寫父類方法遵循“兩同兩小一大”原則
兩同:方法名,參數(shù)列表相同。
兩?。鹤宇惙椒ǚ祷刂殿愋托∮诘扔诟割惙椒ǚ祷刂殿愋?;子類方法聲明拋出的異常類小于等于父類方法聲明拋出的異常類。
一大:子類方法的訪問權(quán)限大于等于父類方法的訪問權(quán)限。
3.重寫父類方法案例
例如:
//定義Animal類class Animal{public String name;//名字屬性public int age;//年齡屬性//動(dòng)物叫的方法void shout(){System.out.print("動(dòng)物發(fā)出的叫聲");}}//定義Cat繼承Animal類class Cat extends Animal{void shout(){System.out.print("喵喵喵~~~~");}//顯示名字和年齡方法public void show(){System.out.print("我是"+name+","+"今年"+age+"歲");}}public class p20 {public static void main(String[] args) {// TODO Auto-generated method stubCat c=new Cat();//創(chuàng)建Cat類實(shí)例對(duì)象c.name="英國短毛貓";//給Cat類的name屬性賦值c.age=2;//給Cat類的age屬性賦值c.show();//調(diào)用Cat類的show()方法c.shout();//調(diào)用Cat類的shout()方法}}
輸出的結(jié)果是:
我是英國短毛貓,今年2歲喵喵喵~~~~從上面代碼中,Cat類是繼承Animal類的shout()方法,當(dāng)Cat類繼承Animal類還沒有shout()方法時(shí),調(diào)用的Animal的shout()方法并打印“動(dòng)物發(fā)出的叫聲”,這時(shí)就不能描述具體的動(dòng)物叫聲,Cat類對(duì)象表示貓類,發(fā)出的叫聲是“喵喵喵~~~”。方法的重寫就是在Cat子類中定義一個(gè)shout()方法對(duì)父類的方法進(jìn)行重寫。在調(diào)用Cat類對(duì)象的shout()方法時(shí),只會(huì)調(diào)用子類重寫的該方法,沒有去調(diào)用父類的shout()方法。
二、super關(guān)鍵字
1.什么是super關(guān)鍵字
super是當(dāng)前類的直接父類對(duì)象,是對(duì)當(dāng)前對(duì)象的直接父類對(duì)象的引用。
2.如果當(dāng)子類重寫父類的方法后,子類對(duì)象是不能訪問父類被重寫的方法,可以使用super關(guān)鍵字訪問父類的成員
3.super關(guān)鍵字調(diào)用父類的成員變量和成員方法格式
super.成員變量Super.成員方法([參數(shù)1,參數(shù)2,參數(shù)3,....])
4.super關(guān)鍵字的用法案例
例如:
//定義Animal類class Animal{String name="動(dòng)物";//name屬性int age=6;//age屬性void shout(){System.out.println("動(dòng)物發(fā)出的叫聲");}}class Dog extends Animal{String name="狗";//name屬性//重寫父類的shout方法void shout(){super.shout();}//訪問父類成員變量void show(){System.out.println("名字:"+super.name+","+"年齡:"+super.age+"歲!");}}public class p22 {public static void main(String[] args) {// TODO Auto-generated method stubDog d=new Dog();//創(chuàng)建狗的對(duì)象d.shout();//調(diào)用Dog對(duì)象的重寫的shout方法d.show();//調(diào)用Dog對(duì)象的show方法}}
輸出的結(jié)果是:
動(dòng)物發(fā)出的叫聲名字:動(dòng)物,年齡:6歲!
從上面代碼中,首先定義一個(gè)Animal類,在Dog類繼承Animal類,然后重寫了父類的shout()方法,在子類中使用super.shout()調(diào)用父類重寫的方法,在show()方法訪問父類的屬性,super關(guān)鍵字是可以訪問屬性和方法。
三、super關(guān)鍵字調(diào)用父類的構(gòu)造方法
1.super關(guān)鍵字調(diào)用父類的構(gòu)造方法格式
super([參數(shù)1,參數(shù)2,參數(shù)3,...])2.super關(guān)鍵字調(diào)用父類的構(gòu)造方法案例
例如:
//定義Fruit類class Fruit{//定義Fruit類有參數(shù)的構(gòu)造方法public Fruit(String name,double weight){System.out.print("我是一個(gè)"+name+","+"重量為:"+weight+"g!");}}//定義Cherry繼承Fruit類class Cherry extends Fruit{public Cherry(){super("櫻桃",66);//調(diào)用父類有參數(shù)的構(gòu)造方法}}public class p23 {public static void main(String[] args) {// TODO Auto-generated method stubCherry c=new Cherry();//實(shí)例化子類Cherry對(duì)象}}
輸出的結(jié)果是:
我是一個(gè)櫻桃,重量為:66.0g!從上面的代碼中,首先是定義了一個(gè)Fruit類,在Fruit類中定義了有參數(shù)的構(gòu)造方法。定義Cherry繼承Fruit類,調(diào)用父類有參數(shù)的構(gòu)造方法。在實(shí)例化Cherry對(duì)象就會(huì)調(diào)用Cherry類的構(gòu)造方法,Cherry類的構(gòu)造方法被調(diào)用時(shí)父類的構(gòu)造方法也一樣被調(diào)用了。super調(diào)用父類構(gòu)造方法的代碼要寫子類構(gòu)造方法的第一行,只可以出現(xiàn)一次。
四、 總結(jié)
本文主要介紹了重寫父類的方法和super關(guān)鍵字。
重寫父類方法就是子類包含父類同名方法,遵循兩同兩小一大”原則。
super關(guān)鍵字是當(dāng)前類的直接父類對(duì)象,是對(duì)當(dāng)前對(duì)象的直接父類對(duì)象的引用,通過super關(guān)鍵字案例理解這個(gè)用法。
此外,本文還介紹了super關(guān)鍵字調(diào)用父類的構(gòu)造的方法,介紹了它的格式和super關(guān)鍵字調(diào)用父類的構(gòu)造方法案例。希望大家通過本文的學(xué)習(xí),對(duì)你有所幫助!
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Java學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬水千山總是情,點(diǎn)個(gè)【在看】行不行
