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

java面試基礎(chǔ) -- 方法重載 & 方法重寫

這篇具有很好參考價值的文章主要介紹了java面試基礎(chǔ) -- 方法重載 & 方法重寫。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

重載

重寫?


重載

? ? ? ? ?方法的重載是指在同一個類中定義多個方法, 他們具有相同的名稱, 但是具有不同的參數(shù)列表, 例如:

public void myMethod(int arg1) {
    // 方法體
}

public void myMethod(int arg1, int arg2) {
    // 方法體
}

public void myMethod(String arg1) {
    // 方法體
}

? ? ? ? 此處我們看到三個不同參數(shù)的, 但是具有相同返回值和方法名的方法.

有如下測試案例:

public class Test {
    public static void main(String[] args) {
        Test_class test = new Test_class();
        test.myMethod(1);
        test.myMethod(1,2);
        test.myMethod("i love you");
    }
}

class Test_class {
    public void myMethod(int arg1) {
        System.out.println("參數(shù)為 int arg1");
    }

    public void myMethod(int arg1, int arg2) {
        System.out.println("參數(shù)為 int arg1  和 int arg2");
    }

    public void myMethod(String arg1) {
        System.out.println("參數(shù)為 String arg1");
    }

}

運行結(jié)果為:

java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java

?我們將其中一個myMethod方法的返回值改為int類型:

java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java

對其結(jié)果并無影響, 重載的返回類型可以相同也可以不相同, 返回類型不做要求.

也就是說每個重載的方法, 都必須要有一個獨一無二的參數(shù)列表, 而返回類型不做要求.

例如有如下兩個重載的方法:

public String myMethod(int arg1) {
    // 方法體
}

public int myMethod(int arg1) {
    // 方法體
}

他們具有相同的方法名, 相同的參數(shù), 但是具不同的返回類型, 調(diào)用方法:

myMethod(1);

因為不同的返回值類型, JVM沒辦法分別到底要調(diào)用哪一個方法;

更深層次的原因: JVM調(diào)用方法是通過方法簽名來判斷到底要調(diào)用那個方法的, 什么是方法簽名?? 方法簽名 == 方法名稱 + 參數(shù)個數(shù) + 以及每個參數(shù)他們的參數(shù)類型 組成的一個唯一值, 這個唯一值就是方法簽名, 從方法簽名可以看出來, 返回類型不是簽名的組成部分, 因此不同的返回類型不能作為是否重載的標志, 所以JVM也就無法確定要調(diào)用哪個方法了.

訪問修飾限定符 是否對重載有影響???

?方法重載對方法的訪問權(quán)限沒有特定的要求。在Java中,方法的訪問權(quán)限可以是public、protected、private或者默認(即不聲明任何訪問修飾符),而方法重載只是指在同一個類中定義了多個方法名相同但參數(shù)列表不同的方法。因此,方法重載并不會對方法的訪問權(quán)限有任何限制

無論是public、protected、private還是默認訪問權(quán)限的方法,都可以進行重載。重載的方法可以擁有不同的訪問權(quán)限,只要符合各自的訪問權(quán)限規(guī)則即可。例如,一個public的方法可以與一個private的方法重載,或者一個protected的方法可以與一個默認訪問權(quán)限的方法重載。

需要注意的是,對于繼承關(guān)系中的子類來說,如果子類要重載父類中的方法,那么子類中重載的方法的訪問權(quán)限不能低于父類中被重載的方法的訪問權(quán)限。這是由于子類要繼承并覆蓋父類的方法,如果降低訪問權(quán)限可能會破壞封裝性。

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.action();
        dog.action(5);
        dog.action("小黑");
    }
}

class Animal {
    public void action() {
        System.out.println("動物發(fā)出叫聲");
    }
}

class Dog extends Animal{
    @Override
    public void action() {
        System.out.println("小狗:汪汪汪");
    }

    protected void action(String name) {
        System.out.println(name + " : 汪汪汪");
    }

    public int action(int age) {
        System.out.println("the dog'age is " + age);
        return 1;
    }
}

?java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java

此代碼中, public void action() {} 繼承了父類中的action, 然后子類中對繼承并重寫的action方法進行重載, 如上:?



重寫?

? ? ? ? ?子類在繼承父類后并不只是擁有了父類的屬性, 還可以對父類的屬性進行拓展, 即對父類的成員方法進行重寫.

? ? ? ? 了解一下重寫是怎么來的???

? ? ? ? 這里有一個animal類, 他是所有動物的父類, 這個animal類具有一個行為方法, 叫做action(), animal類可以派生很多子類, 例如說 dog類, cat 類等等, 我們抽象出來的代碼如下:

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.action();

        Cat cat = new Cat();
        cat.action();
    }
}

class Animal {
    public void action() {
        System.out.println("動物發(fā)出叫聲");
    }
}

class Dog extends Animal{
    // null
}

class Cat extends Animal {
    // null
}

java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java

? ? ? ? 可以看出來, Animal這個類里面的action方法, 可以泛指很多種動物的叫聲, 只要是繼承了這個Animal類的都可以, 但是僅僅只是泛指還不夠, 例如我們在小狗就是旺旺叫, 小貓就是喵喵叫, 這就顯得不夠靈活. 所以只是使用父類的action 方法, 不足以顯示出子類的特性, 所有我們就需要把這個父類繼承過來的方法進行重寫:

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.action();

        Cat cat = new Cat();
        cat.action();
    }
}

class Animal {
    public void action() {
        System.out.println("動物發(fā)出叫聲");
    }
}

class Dog extends Animal{
    public void action() {
        System.out.println("小狗 : 汪汪汪");
    }
}

class Cat extends Animal {
    public void action() {
        System.out.println("小貓: 喵喵喵");
    }
}

java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java

?對比如重載, 我們可以思考一下, 重寫對于返回值, 參數(shù)類型, 或者是權(quán)限修飾符??

規(guī)則:

  • 參數(shù)列表必須完全與被重寫方法相同;
  • 返回類型必須完全與被重寫方法的返回類型相同;
    java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java
  • 訪問權(quán)限不能比父類中被重寫的方法訪問權(quán)限更低;
    java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java
  • 父類的成員方法只能被它的子類重寫;
  • 聲明為final的方法不能被重寫;
  • 聲明為static的方法不能被重寫;
    java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java
  • 構(gòu)造方法不能被重寫;

?文章來源地址http://www.zghlxwxcb.cn/news/detail-656374.html

java面試基礎(chǔ) -- 方法重載 & 方法重寫,java面試基礎(chǔ)篇,面試,職場和發(fā)展,java

?

?

?

到了這里,關(guān)于java面試基礎(chǔ) -- 方法重載 & 方法重寫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java重寫(Override)&重載(Overload)

    目錄 重寫(Override)概述 重寫(Override)講解 重載(Overload)概述 重載(Override)講解 Java面向?qū)ο缶幊讨械闹貙懀╫verride)指的是子類可以重寫其父類中的非private方法,使得子類在調(diào)用該方法時會使用自己的實現(xiàn)而不是父類的實現(xiàn)。 定義一個名為 Animal 的父類和一個名為 Cat 的子類,其

    2023年04月09日
    瀏覽(20)
  • Java語言中的重寫和重載

    重寫(override)和重載(overload)是編程語言中的兩個常見概念,用于描述函數(shù)或方法的特定行為。 重寫 指的是在子類中重新定義(覆蓋)父類中已經(jīng)存在的同名方法。重寫可以修改或擴展父類的方法實現(xiàn),使其更適合子類的需求。在重寫中,子類方法的名稱、參數(shù)類型、返

    2024年02月03日
    瀏覽(39)
  • java.8 - java -override&overload 重寫和重載

    java.8 - java -override&overload 重寫和重載

    重寫是子類對父類的允許訪問的方法的實現(xiàn)過程進行重新編寫, 返回值和形參都不能改變 。 即外殼不變,核心重寫! 重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為。 也就是說子類能夠根據(jù)需要實現(xiàn)父類的方法。 重寫方法不能拋出新的檢查異?;蛘弑缺恢貙懛椒?/p>

    2024年02月11日
    瀏覽(19)
  • 【JAVA】關(guān)于重寫(Override)與重載(Overload)

    【JAVA】關(guān)于重寫(Override)與重載(Overload)

    個人主頁:【??個人主頁】 系列專欄:【??初識JAVA】 關(guān)于JAVA,我們也已經(jīng)學習過一段時間了,今天我們來學習一下在JAVA中方法的重載與重寫。 方法重載(overload)是指 在一個類中定義多個同名但參數(shù)列表不同的方法 。Java編譯器會根據(jù)方法調(diào)用時傳遞的參數(shù)來選擇調(diào)用

    2024年02月08日
    瀏覽(25)
  • 【Java 基礎(chǔ)】類和對象 & 方法重載詳解

    【Java 基礎(chǔ)】類和對象 & 方法重載詳解

    《 Java 零基礎(chǔ)入門到精通 》 專欄持續(xù)更新中。通過本專欄你將學習到 Java 從 入門 到 進階 再到 實戰(zhàn) 的全套完整內(nèi)容,所有內(nèi)容均將集中于此專欄。無論是初學者還是有經(jīng)驗的開發(fā)人員,都可從本專欄獲益。 訂閱專欄后添加我微信或者進交流群,進群可找我領(lǐng)取 前端/Java

    2023年04月11日
    瀏覽(18)
  • 【Java基礎(chǔ)篇】方法的使用(方法的重載和遞歸)

    【Java基礎(chǔ)篇】方法的使用(方法的重載和遞歸)

    作者簡介: 辭七七,目前大一,正在學習C/C++,Java,Python等 作者主頁: 七七的個人主頁 文章收錄專欄 :Java.SE,本專欄主要講解運算符,程序邏輯控制,方法的使用,數(shù)組的使用,類和對象,繼承和多態(tài),抽象類和接口等內(nèi)容 歡迎大家點贊 ?? 收藏 ? 加關(guān)注哦!???? 在

    2024年02月09日
    瀏覽(21)
  • [office] Excel中函數(shù)進行計算兩個日期參數(shù)差值的方法 #職場發(fā)展#學習方法#媒體

    Excel中函數(shù)進行計算兩個日期參數(shù)差值的方法 在excel使用中,如果想計算兩個日期參數(shù)的差值,該用什么函數(shù)和如何使用呢?今天,小編就教大家在Excel中函數(shù)進行計算兩個日期參數(shù)差值的方法。 Excel中函數(shù)進行計算兩個日期參數(shù)差值的步驟 在excel中計算兩個日期參數(shù)的差值,

    2024年02月20日
    瀏覽(20)
  • 【JAVA雜貨鋪】一文帶你走進面向?qū)ο缶幊蘾繼承|重載|重寫|期末復(fù)習系列 | (中4)

    【JAVA雜貨鋪】一文帶你走進面向?qū)ο缶幊蘾繼承|重載|重寫|期末復(fù)習系列 | (中4)

    ??個人主頁:? Aileen_0v0 ??系列專欄 :Java學習系列專欄 ??個人格言:\\\"沒有羅馬,那就自己創(chuàng)造羅馬~\\\" ? 目錄 繼承 ?私有成員變量在繼承中的使用?編輯 ?當子類和父類變量不重名時: 當子類和父類重名時: ???總結(jié): 繼承的含義: toString方法的作用:? 重寫和重載的區(qū)別 對比狗和

    2024年02月05日
    瀏覽(122)
  • 【Java基礎(chǔ)篇】一文搞懂Java方法的調(diào)用與重載(超詳細)

    【Java基礎(chǔ)篇】一文搞懂Java方法的調(diào)用與重載(超詳細)

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【JavaSE_primary】 概念 :在Java中,方法是一段包含了一系列語句的可重用代碼塊。方法用于執(zhí)行特定的任務(wù)或操作,并且可以帶有輸入?yún)?shù)和返回值。 方法的意義 :J

    2024年02月11日
    瀏覽(25)
  • 重載和重寫有什么區(qū)別

    重載和重寫有什么區(qū)別

    重載和重寫是Java中兩個重要的概念。重載可以實現(xiàn)本類內(nèi)的方法多態(tài)性,重寫可以實現(xiàn)子類或?qū)崿F(xiàn)類的多態(tài)性。 一、重載 在自然語言中,經(jīng)常會出現(xiàn)“一詞多義”的現(xiàn)象。比如:“墨水”,它可以指一種含有色素或染料的液體,墨水被用于書寫或繪畫;還可以指人的文化、

    2023年04月08日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包