如何掌握J(rèn)ava中的方法重寫

這篇“如何掌握J(rèn)ava中的方法重寫”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何掌握J(rèn)ava中的方法重寫”文章吧。

目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、皮山網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

如何掌握J(rèn)ava中的方法重寫

1.含義

子類繼承父類后,可以在子類中書寫一個與父類同名同參的方法,從而實現(xiàn)對父類中同名同參數(shù)的方法的覆蓋,我們把這一過程叫做方法的重寫(override)

2.為什么要使用方法重寫

2.1 當(dāng)父類的方法滿足不了子類的需求的時候,需要在子類中對該方法進行重寫

2.2 題目與分析

例如存在一個父類Peple,子類Chinese,父類中有一個say()方法,輸出人在說話,但是我想要的時子類時候調(diào)用時輸出中國人在說話,很顯然直接調(diào)用方法不行,所以需要在子類中對say方法進行方法的重寫

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)進行方法重寫時,調(diào)用的是子類的say()方法
    }
}

2.4 示例代碼運行截圖

如何掌握J(rèn)ava中的方法重寫

3.如何使用方法重寫

3.1 基本語法

@Override
權(quán)限修飾符 返回值類型 方法名(形參列表){
    //子類重寫的方法的權(quán)限修飾符的訪問權(quán)限必須大于等于父類的,但是父類不能是private
    //當(dāng)父類的返回值類型為基本數(shù)據(jù)類型或者為void時,子類方法的返回值類型也應(yīng)該為對應(yīng)的基本數(shù)據(jù)類型或者void
  
}

3.2 具體分析

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 示例代碼運行截圖

如何掌握J(rèn)ava中的方法重寫

3.2.2 當(dāng)父類方法的返回值類型為基本數(shù)據(jù)類型時,子類重寫的方法的返回值類型也為對應(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 示例代碼運行截圖

如何掌握J(rèn)ava中的方法重寫

3.2.3 當(dāng)父類方法的返回值類型為void時,子類重寫的方法的返回值類型也為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 示例代碼運行截圖

如何掌握J(rèn)ava中的方法重寫

3.2.4 當(dāng)父類的方法被static修飾的時候,子類是不能重寫該方法的

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 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 示例代碼運行截圖

編譯時idea給出的錯誤提示

如何掌握J(rèn)ava中的方法重寫

強制運行后給出的錯誤提示

如何掌握J(rèn)ava中的方法重寫

3.3 方法重寫的一些小技巧

3.3.1 復(fù)制法

步驟

1.先直接復(fù)制(Ctrl+C)父類中需要被子類重寫的那個方法

2.粘貼(Ctrl+V)到子類中

3.修改子類中的功能,便于實現(xiàn)父類實現(xiàn)不了的需求

操作截圖展示

如何掌握J(rèn)ava中的方法重寫

如何掌握J(rèn)ava中的方法重寫

3.3.2 編譯器提示法

步驟

1.先在子類類體中,非方法內(nèi)位置,寫入一個英文@符號

2.選中提示中的Overide/implement methods…

3.雙擊后彈出一個重寫方法選擇列表彈窗

4.根據(jù)提示選中對應(yīng)的需要重寫的方法

5.點擊ok按鈕后會在子類中生成一個你選中方法的重寫方法

6.把生成的重寫方法中的自動生成的首行去掉,然后根據(jù)需求在方法體里面寫入合適的語句

操作截圖展示

如何掌握J(rèn)ava中的方法重寫

如何掌握J(rèn)ava中的方法重寫

如何掌握J(rèn)ava中的方法重寫

3.3.3 快捷鍵法

步驟

1.把鼠標(biāo)移動到重寫方法應(yīng)該生成的位置

2.同時按下鍵盤上的Alt鍵和Insert鍵,

3.在彈出框中,選中Override Methods

4.雙擊后會彈出一個界面,在界面中選中需要被子類重寫的方法

5.點擊OK按鈕后會生成所需要的重寫方法

6.去掉重寫方法中自動生成的首行,然在其方法體里面寫入合適的語句

操作截圖展示

如何掌握J(rèn)ava中的方法重寫

如何掌握J(rèn)ava中的方法重寫

如何掌握J(rèn)ava中的方法重寫

如何掌握J(rèn)ava中的方法重寫

以上就是關(guān)于“如何掌握J(rèn)ava中的方法重寫”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:如何掌握J(rèn)ava中的方法重寫
分享鏈接:http://www.muchs.cn/article34/ijssse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站排名動態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計、標(biāo)簽優(yōu)化靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作