您好,登錄后才能下訂單哦!
這篇“如何掌握J(rèn)ava中的方法重寫”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何掌握J(rèn)ava中的方法重寫”文章吧。
子類繼承父類后,可以在子類中書寫一個(gè)與父類同名同參的方法,從而實(shí)現(xiàn)對父類中同名同參數(shù)的方法的覆蓋,我們把這一過程叫做方法的重寫(override)
2.1 當(dāng)父類的方法滿足不了子類的需求的時(shí)候,需要在子類中對該方法進(jìn)行重寫
2.2 題目與分析
例如存在一個(gè)父類Peple,子類Chinese,父類中有一個(gè)say()方法,輸出人在說話,但是我想要的時(shí)子類時(shí)候調(diào)用時(shí)輸出中國人在說話,很顯然直接調(diào)用方法不行,所以需要在子類中對say方法進(jìn)行方法的重寫
2.3 示例代碼
People類
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void say(){ System.out.println("人在說話"); } }
Chinese類
public class Chinese extends Peple{ public Chinese() { } @Override public void say() { System.out.println("中國人在說話"); } }
Test03類
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); //當(dāng)進(jìn)行方法重寫時(shí),調(diào)用的是子類的say()方法 } }
2.4 示例代碼運(yùn)行截圖
@Override 權(quán)限修飾符 返回值類型 方法名(形參列表){ //子類重寫的方法的權(quán)限修飾符的訪問權(quán)限必須大于等于父類的,但是父類不能是private //當(dāng)父類的返回值類型為基本數(shù)據(jù)類型或者為void時(shí),子類方法的返回值類型也應(yīng)該為對應(yīng)的基本數(shù)據(jù)類型或者void }
3.2.1 子類重寫的方法的訪問權(quán)限應(yīng)該大于等于父類方法的訪問權(quán)限
a 示例代碼
People類
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } //沒有寫訪問權(quán)限的話,默認(rèn)是default訪問權(quán)限 void say(){ System.out.println("人在說話"); } }
Chinese類
public class Chinese extends Peple{ public Chinese(){ } //父類say方法的訪問權(quán)限為default,子類say方法的訪問權(quán)限為public, // 符合子類方法訪問權(quán)限大于等于父類方法訪問權(quán)限的要求 @Override public void say() { System.out.println("中國人在說話"); } }
Test03類
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); } }
b 示例代碼運(yùn)行截圖
3.2.2 當(dāng)父類方法的返回值類型為基本數(shù)據(jù)類型時(shí),子類重寫的方法的返回值類型也為對應(yīng)的基本數(shù)據(jù)類型
a 示例代碼
People類
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public double add(int a,int b){ return a+b; } }
Chinese類
public class Chinese extends Peple{ public Chinese(){ } @Override public double add(int a,int b) { return a+b+1; } }
Test03類
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); System.out.println("求和之和再加上1的結(jié)果為: "+c.add(2, 3)); } }
b 示例代碼運(yùn)行截圖
3.2.3 當(dāng)父類方法的返回值類型為void時(shí),子類重寫的方法的返回值類型也為void
a 示例代碼
People類
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void eat(){ System.out.println("人的主食一般是熟食"); } }
Chinese類
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中國人的主食是大米或者小麥"); } }
Test03類
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b 示例代碼運(yùn)行截圖
3.2.4 當(dāng)父類的方法被static修飾的時(shí)候,子類是不能重寫該方法的
a 錯(cuò)誤示例代碼
People類
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public static void eat(){ System.out.println("人的主食一般是熟食"); } }
Chinese類
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中國人的主食是大米或者小麥"); } }
Test03類
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b 示例代碼運(yùn)行截圖
編譯時(shí)idea給出的錯(cuò)誤提示
強(qiáng)制運(yùn)行后給出的錯(cuò)誤提示
3.3.1 復(fù)制法
步驟
1.先直接復(fù)制(Ctrl+C)父類中需要被子類重寫的那個(gè)方法
2.粘貼(Ctrl+V)到子類中
3.修改子類中的功能,便于實(shí)現(xiàn)父類實(shí)現(xiàn)不了的需求
操作截圖展示
3.3.2 編譯器提示法
步驟
1.先在子類類體中,非方法內(nèi)位置,寫入一個(gè)英文@符號
2.選中提示中的Overide/implement methods…
3.雙擊后彈出一個(gè)重寫方法選擇列表彈窗
4.根據(jù)提示選中對應(yīng)的需要重寫的方法
5.點(diǎn)擊ok按鈕后會(huì)在子類中生成一個(gè)你選中方法的重寫方法
6.把生成的重寫方法中的自動(dòng)生成的首行去掉,然后根據(jù)需求在方法體里面寫入合適的語句
操作截圖展示
3.3.3 快捷鍵法
步驟
1.把鼠標(biāo)移動(dòng)到重寫方法應(yīng)該生成的位置
2.同時(shí)按下鍵盤上的Alt鍵和Insert鍵,
3.在彈出框中,選中Override Methods
4.雙擊后會(huì)彈出一個(gè)界面,在界面中選中需要被子類重寫的方法
5.點(diǎn)擊OK按鈕后會(huì)生成所需要的重寫方法
6.去掉重寫方法中自動(dòng)生成的首行,然在其方法體里面寫入合適的語句
操作截圖展示
以上就是關(guān)于“如何掌握J(rèn)ava中的方法重寫”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。