欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文解析Java中的方法重寫(xiě)

 更新時(shí)間:2022年07月13日 10:51:33   作者:SSS4362  
子類繼承父類后,可以在子類中書(shū)寫(xiě)一個(gè)與父類同名同參的方法,從而實(shí)現(xiàn)對(duì)父類中同名同參數(shù)的方法的覆蓋,我們把這一過(guò)程叫做方法的重寫(xiě)。本文將分析一下Java中的方法重寫(xiě),感興趣的可以了解一下

1.含義

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

2.為什么要使用方法重寫(xiě)

2.1 當(dāng)父類的方法滿足不了子類的需求的時(shí)候,需要在子類中對(duì)該方法進(jìn)行重寫(xiě)

2.2 題目與分析

例如存在一個(gè)父類Peple,子類Chinese,父類中有一個(gè)say()方法,輸出人在說(shuō)話,但是我想要的時(shí)子類時(shí)候調(diào)用時(shí)輸出中國(guó)人在說(shuō)話,很顯然直接調(diào)用方法不行,所以需要在子類中對(duì)say方法進(jìn)行方法的重寫(xiě)

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("人在說(shuō)話");
    }

}

Chinese類

public class Chinese extends Peple{
    public Chinese() {
    }
    @Override
    public void say() {
        System.out.println("中國(guó)人在說(shuō)話");
    }
}

Test03類

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.say();
        //當(dāng)進(jìn)行方法重寫(xiě)時(shí),調(diào)用的是子類的say()方法
    }
}

2.4 示例代碼運(yùn)行截圖

3.如何使用方法重寫(xiě)

3.1 基本語(yǔ)法

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

3.2 具體分析

3.2.1 子類重寫(xiě)的方法的訪問(wèn)權(quán)限應(yīng)該大于等于父類方法的訪問(wèn)權(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;
    }
    //沒(méi)有寫(xiě)訪問(wèn)權(quán)限的話,默認(rèn)是default訪問(wèn)權(quán)限
    void say(){
        System.out.println("人在說(shuō)話");
    }

}

Chinese類

public class Chinese extends Peple{
    public Chinese(){
    }
    //父類say方法的訪問(wèn)權(quán)限為default,子類say方法的訪問(wèn)權(quán)限為public,
    // 符合子類方法訪問(wèn)權(quán)限大于等于父類方法訪問(wèn)權(quán)限的要求
    @Override
    public void say() {
        System.out.println("中國(guó)人在說(shuō)話");
    }
}

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í),子類重寫(xiě)的方法的返回值類型也為對(duì)應(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í),子類重寫(xiě)的方法的返回值類型也為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("中國(guó)人的主食是大米或者小麥");
    }
}

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í)候,子類是不能重寫(xiě)該方法的

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("中國(guó)人的主食是大米或者小麥");
    }
}

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 方法重寫(xiě)的一些小技巧

3.3.1 復(fù)制法

步驟

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

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

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

操作截圖展示

3.3.2 編譯器提示法

步驟

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

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

3.雙擊后彈出一個(gè)重寫(xiě)方法選擇列表彈窗

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

5.點(diǎn)擊ok按鈕后會(huì)在子類中生成一個(gè)你選中方法的重寫(xiě)方法

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

操作截圖展示

3.3.3 快捷鍵法

步驟

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

2.同時(shí)按下鍵盤(pán)上的Alt鍵和Insert鍵,

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

4.雙擊后會(huì)彈出一個(gè)界面,在界面中選中需要被子類重寫(xiě)的方法

5.點(diǎn)擊OK按鈕后會(huì)生成所需要的重寫(xiě)方法

6.去掉重寫(xiě)方法中自動(dòng)生成的首行,然在其方法體里面寫(xiě)入合適的語(yǔ)句

操作截圖展示

以上就是一文解析Java中的方法重寫(xiě)的詳細(xì)內(nèi)容,更多關(guān)于Java方法重寫(xiě)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Redis incr解決并發(fā)問(wèn)題的操作

    使用Redis incr解決并發(fā)問(wèn)題的操作

    這篇文章主要介紹了使用Redis incr解決并發(fā)問(wèn)題的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Java多線程中的CountDownLatch解析

    Java多線程中的CountDownLatch解析

    這篇文章主要介紹了Java多線程中的CountDownLatch解析,CountDownLatch是一個(gè)阻塞部分線程直到其他線程執(zhí)行完成后喚醒的同步計(jì)數(shù)器,核心是其內(nèi)部類Sync繼承于AQS,同時(shí)也是利用的AQS的同步原理,也稱之為閉鎖,需要的朋友可以參考下
    2023-11-11
  • SpringBoot靜態(tài)資源css,js,img配置方案

    SpringBoot靜態(tài)資源css,js,img配置方案

    這篇文章主要介紹了SpringBoot靜態(tài)資源css,js,img配置方案,下文給大家分享了三種解決方案,需要的朋友可以參考下
    2017-07-07
  • SpringBoot將Bean放入容器的五種方式

    SpringBoot將Bean放入容器的五種方式

    這篇文章給大家介紹了SpringBoot將Bean放入容器的五種方式,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Java基礎(chǔ)詳解之內(nèi)存泄漏

    Java基礎(chǔ)詳解之內(nèi)存泄漏

    這篇文章主要介紹了Java基礎(chǔ)詳解之內(nèi)存泄漏,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot實(shí)現(xiàn)接口冪等性的4種方案

    SpringBoot實(shí)現(xiàn)接口冪等性的4種方案

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接口冪等性的4種方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 出現(xiàn)次數(shù)超過(guò)一半(50%)的數(shù)

    出現(xiàn)次數(shù)超過(guò)一半(50%)的數(shù)

    給出n個(gè)數(shù),需要我們找出出現(xiàn)次數(shù)超過(guò)一半的數(shù),下面小編給大家分享下我的實(shí)現(xiàn)思路及關(guān)鍵代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-07-07
  • java高并發(fā)ScheduledThreadPoolExecutor類深度解析

    java高并發(fā)ScheduledThreadPoolExecutor類深度解析

    這篇文章主要為大家介紹了java高并發(fā)ScheduledThreadPoolExecutor類源碼深度解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • logback ThrowableProxyConverter類源碼流程解析

    logback ThrowableProxyConverter類源碼流程解析

    這篇文章主要為大家介紹了logback ThrowableProxyConverter類源碼流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 使用Netty搭建服務(wù)端和客戶端過(guò)程詳解

    使用Netty搭建服務(wù)端和客戶端過(guò)程詳解

    這篇文章主要介紹了使用Netty搭建服務(wù)端和客戶端過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論