黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 大家想要了解的-方法的覆蓋和重載

大家想要了解的-方法的覆蓋和重載

更新時間:2023-02-09 16:32:44 來源:動力節點 瀏覽2310次

一.方法覆蓋

① 方法覆蓋發生在具有繼承關系的父子類之間,這是首要條件;

② 覆蓋之后的方法與原方法具有相同的返回值類型、相同的方法名、相同的形式參數列表

③覆蓋之后的方法不能比原方法擁有更低的訪問權限,可以更高(學習了訪問控制權限修飾符之后你就明白了);

④ 覆蓋之后的方法不能比原方法拋出更多的異常,可以相同或更少(學習了異常之后就明白了);

⑤與了多態機制之后相同的返回值類型"可以修改一下嗎?

對于返回值類型是基本數據類型來說,必須一致

對于返回值類型是引用數據類型來說,重寫之后返回值類型可以變的更小但不能變大(但意義不大,開發無意義)

public class OverrideTest01 {
    public static void main(String[] args) {
        Bird2 b=new Bird2();
        b.move2();
        Cat2 c=new Cat2();
        c.move2();
        c.move2(1);//構成方法重載
    }
}
class Animal2{
    public void move2() {
        System.out.println("fly");
    }
}
class Bird2 extends Animal2 {

    public void move2() {
        System.out.println("I want fly");
    }
}    
 /*   private void move2(){
        System.out.println("I want fly");
    }
}*/
class Cat2 extends Animal2 {
    public void move2(int i){
        System.out.println("I want talk");
    }
}

I want fly

I want talk

私有方法不可覆蓋,靜態方法覆蓋沒什么意義

public class OverrideTest06{
    private void dosome(){
        System.out.println("private dosome method dosome execute");
    }
    public static void main(String[] args){
        OverrideTest06 at=new T();
        at.dosome();
    }
}
class mytest{
    public static void main(String[] args){
        OverrideTest06 ot = new T();
        ot.dosome();

    }
}
class T extends OverrideTest06{

    public void dosome(){
        System.out.println("T 's public dosome method execute");
    }
}

//經過測試,私有方法不可覆蓋

注意事項

注意1:方法覆蓋只是針對于方法,和屬性無關。

注意2:私有方法無法愛蓋

注意3:構造方法不能被繼承,所以構造方法也不能被愛蓋

注意4:方法覆蓋只是針對于實例方法",靜態方法覆蓋”沒有意義。

二.方法重載

方法重載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數的類型或參數的個數。調用重載方法時,Java編譯器能通過檢查調用的方法的參數類型和個數選擇一個恰當的方法。(百度百科)

簡單來說可以根據不同的需求使用不同的參數創建對象!

方法重載(overload)是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數的類型或參數的個數。

public class OverloadTest01 {
    public static void main(String[] args) {

        System.out.println(sum(10,20));

        System.out.println(sum(20.0,30.0));
        System.out.println(sum(20L,50L));
    }

    public static int sum(int a,int b) {
        return a+b;
    }
    public static double sum(double a,double b){
        return  a+b;
    }
    public static long sum(Long a,Long b){
        return a+b;
    }
}

代碼滿足以下三個條件的時候構成方法重載

① 在同一個類當中。

② 方法名相同。

③ 參數列表不同:個數不同算不同,順序不同算不同,類型不同也算不同。

public class OverloadTest02 {
    public static void main(String[] args) {
        m1();
        m1(10,20.0);
        m2(20.0,10);
        //m5();
        //m6();
    }
    public static void m1(){

    }
    public static void m1(int a,double b){
        System.out.println("int a,double b");
    }
    public static void m2(double a,int b){
        System.out.println("double a,int b");
    }
    /*

    public static int m5(){
        return 1;
    }
    public static double m5(){
        return 1.0;
    }
    public static void m6(){

    }
    static void m6(){
        
    }*/
}


int a,double b

double a,int b

從m5,m6可知方法重載與返回值類型,修飾符列表無關

引申:我們從System.out.println()中可以體會到println其實也是一種方法重載

三.方法重載和方法覆蓋有什么區別?

方法重載發生在同一個類當中

方法覆蓋是發生在具有繼承關系的父子類之間。

方法重載是一個類中,方法名相同,參數列表不同

方法覆蓋是具有繼承關系的父子類,并且重寫之后的方法必須和之前的方法一致:方法名一致、參數列表一致、返回值類型一致

以上就是動力節點小編介紹的"大家想要了解的-方法的覆蓋和重載",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 中国大陆一级毛片 免费 | 欧美中文字幕一区 | 看全色黄大色黄大片免责看的 | 高清色视频 | 欧美精品日韩一区二区三区 | 人成免费网站 | 在线观看麻豆精品国产不卡 | 国产精品喷水在线观看 | 91小视频在线观看免费版高清 | 在线视频一区二区三区在线播放 | 视频网站黄 | 日韩美毛片 | 北条麻妃初尝试黑人在线观看 | 成人在线不卡 | 欧美成人午夜在线全部免费 | 你懂的在线免费视频 | 免费视频亚洲 | 在线天堂中文在线网 | 91小视频在线观看免费版高清 | 亚洲黄在线观看 | 日本免费一区二区三区a区 日本免费一区二区三区看片 | 波多野结衣手机视频一区 | 91po国产在线精品免费观看 | 一级α片 | 欧美午夜激情影院 | 91精品综合久久久久久五月天 | 欧美乱人伦中文在线观看不卡 | 国产成人深夜福利在线观看 | 在线免费日韩 | 男女免费爽爽爽在线视频 | 欧美极品另类高清videos | 欧美韩日| 高清色视频| 成人在线色视频 | 日本香蕉一区二区三区 | 国产人成免费视频 | 夜夜骑天天干 | 欧美精品日韩一区二区三区 | 色片免费网站 | 在线观看你懂的视频 | 蜜臀国产在线 |