国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

還沒搞懂重寫和重載嗎?這篇文章可以幫助你

這篇具有很好參考價(jià)值的文章主要介紹了還沒搞懂重寫和重載嗎?這篇文章可以幫助你。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

首先,會(huì)大致介紹一下什么叫做向上轉(zhuǎn)型,方便后續(xù)的理解


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、向上轉(zhuǎn)型

1.概念:

向上轉(zhuǎn)型是Java的一個(gè)多態(tài)性的表現(xiàn)形式。指的是一個(gè)子類的對(duì)象賦值給父類類型的引用變量。換句話說,它是將一個(gè)對(duì)象轉(zhuǎn)換為它的父類類型。

2.CODE

class Animal {
    public void eat() {
        System.out.println("Animal is eating.");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking.");
    }
}
public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat(); // 直接通過子類對(duì)象調(diào)用父類方法
        dog.bark(); // 調(diào)用子類特有的方法

        Animal animal = dog; // 向上轉(zhuǎn)型,將Dog對(duì)象賦值給Animal類型的引用變量
        Animal animal1 = new Dog();//也可以這樣子
        animal.eat();
        animal.eat(); // 通過父類引用調(diào)用父類方法
        // animal.bark(); // 錯(cuò)誤,父類引用無法調(diào)用子類特有的方法
    }
}

在上述示例中,Dog 類繼承自 Animal 類。通過向上轉(zhuǎn)型,我們將 Dog 對(duì)象賦值給 Animal 類型的引用變量 animal。雖然 animal 是 Animal 類型的引用,但實(shí)際上它引用的是 Dog 類的對(duì)象。因此,我們可以通過 animal 調(diào)用 Animal 類的方法,但無法調(diào)用 Dog 類特有的方法。

二、重寫

1.發(fā)生在子類和父類之間。
2.子類通過定義一個(gè)與父類中具有相同名稱、參數(shù)列表和返回類型的方法來重寫父類的方法。
3.重寫方法在運(yùn)行時(shí)動(dòng)態(tài)綁定,即根據(jù)實(shí)際對(duì)象的類型確定調(diào)用哪個(gè)方法。
4.重寫方法可以訪問和修改父類中的非私有成員。
5.重寫方法可以修改方法的行為,實(shí)現(xiàn)自定義的邏輯。

class Animal {
    public void makeSound() {
        System.out.println("Animal makes a sound.");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Cat meows.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.makeSound(); // 輸出:Animal makes a sound.

        Cat cat = new Cat();
        cat.makeSound(); // 輸出:Cat meows.

        Animal animalCat = new Cat();
        animalCat.makeSound(); // 輸出:Cat meows.,動(dòng)態(tài)綁定到 Cat 類的 makeSound() 方法
    }
}

看到雖然向上轉(zhuǎn)型了,但是調(diào)用的依然是子類的方法。
動(dòng)態(tài)和靜態(tài)綁定在文末

三.重載

1.發(fā)生在同一個(gè)類中,或者在父類和子類之間。
2.同一個(gè)類中的方法可以有相同的名稱,但參數(shù)列表必須不同(參數(shù)的類型、順序或數(shù)量)。
3.重載方法在編譯時(shí)靜態(tài)綁定,即根據(jù)調(diào)用方法時(shí)傳遞的參數(shù)類型來確定調(diào)用哪個(gè)方法。
4.重載方法不能修改已有方法的行為,只是提供了更多的方法簽名選項(xiàng),用于處理不同的參數(shù)組合

class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public String add(String a, String b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();

        int result1 = calculator.add(2, 3);
        System.out.println(result1); // 輸出:5

        double result2 = calculator.add(2.5, 3.5);
        System.out.println(result2); // 輸出:6.0

        String result3 = calculator.add("Hello", "World");
        System.out.println(result3); // 輸出:HelloWorld
    }
}

所以只是提供了更多的方法簽名選項(xiàng),用于處理不同的參數(shù)組合。

四.動(dòng)態(tài)和靜態(tài)綁定

1.當(dāng)說重載方法在編譯時(shí)靜態(tài)綁定,是指在編譯時(shí)期就確定了要調(diào)用哪個(gè)重載方法,而不是在運(yùn)行時(shí)動(dòng)態(tài)決定。

當(dāng)我們調(diào)用一個(gè)重載方法時(shí),編譯器會(huì)根據(jù)我們傳遞的參數(shù)類型來確定要調(diào)用哪個(gè)重載方法。這個(gè)決定是在編譯時(shí)期完成的,因此稱為靜態(tài)綁定。
比如上述圖片中calculator就是根據(jù)前面是int還是double類型確定調(diào)用哪個(gè)方法
2.動(dòng)態(tài)綁定(Dynamic binding)是指在程序運(yùn)行時(shí)根據(jù)對(duì)象的實(shí)際類型確定要調(diào)用的方法。在動(dòng)態(tài)綁定中,方法的調(diào)用是根據(jù)對(duì)象的實(shí)際類型來決定的,而不是根據(jù)變量的聲明類型或編譯時(shí)期的類型來決定。

動(dòng)態(tài)綁定通常與多態(tài)性(Polymorphism)相關(guān)聯(lián)。當(dāng)使用父類類型的引用變量引用子類對(duì)象時(shí),如果調(diào)用的方法在子類中被重寫,那么在運(yùn)行時(shí)會(huì)根據(jù)對(duì)象的實(shí)際類型來決定調(diào)用的方法。就是仍然調(diào)用子類的方法

總結(jié)

1.重寫是子類對(duì)父類方法的重新實(shí)現(xiàn),重載是在同一個(gè)類中或父子類之間對(duì)方法名稱的多次定義。

2.重寫關(guān)注于繼承關(guān)系,子類重寫父類的方法。

3.重載關(guān)注于方法的參數(shù)列表,同一個(gè)類中的方法可以有不同的參數(shù)列表。

4.重寫方法在運(yùn)行時(shí)動(dòng)態(tài)綁定,重載方法在編譯時(shí)靜態(tài)綁定。

5.需要注意的是,重寫和重載的區(qū)別在于方法的簽名(包括方法名稱和參數(shù)列表),而不僅僅是方法名稱相同。
好了博客到此結(jié)束咯,希望大佬們的三連,歡迎大佬們的評(píng)論哇?。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-464129.html

到了這里,關(guān)于還沒搞懂重寫和重載嗎?這篇文章可以幫助你的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一篇文章讓你搞懂內(nèi)存函數(shù)

    一篇文章讓你搞懂內(nèi)存函數(shù)

    庫函數(shù)memcmp介紹 函數(shù)memcpy從source的位置開始向后復(fù)制num個(gè)字節(jié)的數(shù)據(jù)到destination的內(nèi)存位置。 這個(gè)函數(shù)在遇到 ‘\\0’ 的時(shí)候并不會(huì)停下來。 如果source和destination有任何的重疊,復(fù)制的結(jié)果都是未定義的。 庫函數(shù)memcmp的代碼形式 看代碼 memcmp將arr1中的內(nèi)容拷貝到arr2中,總共

    2024年02月17日
    瀏覽(30)
  • 搞懂TVS管,有這篇文章就夠了

    摘要:本文主要介紹TVS的工作原理、關(guān)鍵參數(shù)和選型。 TVS(Transient Voltage Suppressors,瞬態(tài)電壓抑制器)又稱雪崩擊穿二極管,是一種高效電路保護(hù)器件,主要是保護(hù)電路不受瞬態(tài)高壓尖峰脈沖(靜電或雷擊浪涌)的沖擊。 TVS是采用半導(dǎo)體工藝制成的單個(gè)PN結(jié)或多個(gè)PN結(jié)集成的器件,

    2023年04月08日
    瀏覽(30)
  • 一篇文章帶你搞懂前端Cookie

    一篇文章帶你搞懂前端Cookie

    瀏覽器Cookie相信各位點(diǎn)進(jìn)這篇文章的小伙伴應(yīng)該不陌生了,它是前端領(lǐng)域中一個(gè)非常重要的內(nèi)容,當(dāng)然也是面試的一個(gè)考點(diǎn),不知道各位小伙伴是否真正掌握了Cookie呢?當(dāng)然沒有掌握也是沒有關(guān)系的,可以跟著小編的腳步一起來學(xué)習(xí)一下前端Cookie,沒有熟練掌握的小伙伴看完這

    2024年02月04日
    瀏覽(32)
  • 一篇文章搞懂前端sso需要做什么

    一篇文章搞懂前端sso需要做什么

    父域 Cookie 認(rèn)證中心 LocalStorage 跨域 一般情況下,用戶的登錄狀態(tài)是記錄在 Session 中的,要實(shí)現(xiàn)共享登錄狀態(tài),就要先共享 Session,但是由于不同的應(yīng)用系統(tǒng)有著不同的域名,盡管 Session 共享了,但是由于 SessionId 是往往保存在瀏覽器 Cookie 中的,因此存在作用域的限制,無法

    2024年02月20日
    瀏覽(31)
  • 一篇文章帶你搞懂stm32工程文件

    一篇文章帶你搞懂stm32工程文件

    本文以stm32f4為例,講解stm32標(biāo)準(zhǔn)庫工程中各個(gè)文件的作用,學(xué)藝不精,如有錯(cuò)誤,望大家私信或評(píng)論指出。 先看思維導(dǎo)圖 startup_stm32f427xx.s? 該文件是stm32的啟動(dòng)文件,由匯編語言編寫,主要是做stm32上電時(shí)的配置設(shè)置(如堆棧指針,時(shí)鐘數(shù))并跳轉(zhuǎn)到main函數(shù)中,執(zhí)行c代碼。

    2024年02月21日
    瀏覽(35)
  • 還沒搞懂YOLO v7,YOLO v8已經(jīng)來了!

    YOLOv1-YOLOv8系列回顧 YOLOv1: 2015年Joseph Redmon和Ali Farhadi等人(華盛頓大學(xué)) YOLOv2: 2016年Joseph Redmon和Ali Farhadi等人(華盛頓大學(xué)) YOLOv3: 2018年Joseph Redmon和Ali Farhadi等人(華盛頓大學(xué)) YOLOv4: 2020年Alexey Bochkovskiy和Chien-Yao Wang等人 YOLOv5: 2020年Ultralytics公司 YOLOv6: 2022年美團(tuán)公

    2024年02月04日
    瀏覽(33)
  • 一篇文章讓你搞懂自定義類型-----結(jié)構(gòu)體

    一篇文章讓你搞懂自定義類型-----結(jié)構(gòu)體

    結(jié)構(gòu)是一些值的集合,這些值稱為成員變量。結(jié)構(gòu)的每個(gè)成員可以是不同類型的變量 例如描述一個(gè)學(xué)生 在聲明結(jié)構(gòu)的時(shí)候,可以不完全的聲明 比如 上面的兩個(gè)結(jié)構(gòu)在聲明的時(shí)候省略掉了結(jié)構(gòu)體標(biāo)簽(tag) 那么問題來了 警告: 編譯器會(huì)把上面的兩個(gè)聲明當(dāng)成完全不同的兩個(gè)

    2024年02月16日
    瀏覽(30)
  • Unity/C#------委托與事件(一篇文章徹底搞懂...)

    Unity/C#------委托與事件(一篇文章徹底搞懂...)

    ? ? ? ? 所有的代碼語言創(chuàng)造者母語都是英語,我們從英語翻譯到中文的過程中難免會(huì)存在一些不太能還原本意的詞,比如我之前一直不理解構(gòu)造函數(shù)和析構(gòu)函數(shù),只知道這倆貨作用相反,直到我看到了它的英文意思,Construstor/Distructor,我才徹底理解了他們的作用。 ? ? ?

    2024年02月06日
    瀏覽(22)
  • 一篇文章帶你搞懂GIT、Github、Gitee

    一篇文章帶你搞懂GIT、Github、Gitee

    本文介紹了GIt,GitHub,Gitee的使用,與IDEA的Git配置,跟著文章來做你很快就能學(xué)會(huì)操作Git,利用其進(jìn)行版本控制與代碼托管,學(xué)習(xí)Git的使用、Git常用命令、Git分支,分支是團(tuán)隊(duì)協(xié)作的基礎(chǔ),介紹了團(tuán)隊(duì)內(nèi),外協(xié)作和Github遠(yuǎn)程倉庫的操作、使用IDEA中的Git、IDEA中GIt的使用、在I

    2023年04月19日
    瀏覽(26)
  • 什么是區(qū)塊鏈?一篇文章搞懂區(qū)塊鏈本質(zhì)

    鑒于我對(duì)區(qū)塊鏈的關(guān)注,以及很多關(guān)注我的朋友們,并不是很清楚區(qū)塊鏈的本質(zhì)和潛力點(diǎn),所以今天在地鐵里疏離了一下,并分享給大家。 你見過錢嗎?我相信你是沒見過真正的錢的。 這是錢嗎? 這是“鈔票”,而不是錢!這不是摳字眼,且聽我細(xì)細(xì)道來。 別人管你借錢的

    2024年01月22日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包