close
文章出處

重載

重載指的是兩個或者兩個以上同名函數,但它們的參數不一樣,這時會出現函數重載的情況。比如下面這段代碼

class Test{
    public void a(){
        System.out.println("正常");
    }
    public void a(String t){
        System.out.println("第二個a" + t);
    }
}
class app{
    public static void main(String[] args){
        Test test = new Test();
        test.a("啊"); // 函數被重載
        test.a(); // 未被重載
    }
}
------Output------
第二個a啊
正常

也就是它具體使用那個函數,是根據你的參數來決定的。

重寫

通俗講就是覆蓋,在Java好像對同一個類中,不支持重寫,下面這段代碼,運行就報錯了。

class Test{
    public void a(){
        System.out.println(0);
    }
    public void a(){
        System.out.println(1);
    }
}
class app{
    public static void main(String[] args){
        Test test = new Test();
        test.a();
    }
}

------Output------
app.java:5: ??: ??? Test?????? a()
    public void a(){
                ^
1 ???

一般來說,也沒人會這么寫,使用重寫,基本上是在繼承中,比如下面這段代碼。

class Test{
    public void a(){
        System.out.println(0);
    }
}

class Test2 extends Test{
    public void a(){
        System.out.println(1);
    }
}
class app{
    public static void main(String[] args){
        Test2 test = new Test2();
        test.a();
    }
}

------Output------
1

Test2重寫了Test中的a方法,不過在Java中,如果你想要重寫某個方法,需要遵守幾個規則,重寫的函數返回類型需要和父類中返回的類型相同,形參相同,訪問權限不能比父類中的小,比如下面這個就有問題

class Test{
    public int a(){
        return 0;
    }
}

class Test2 extends Test{
    private int a(){
        return 1;
    }
}
class app{
    public static void main(String[] args){
        Test2 test = new Test2();
        test.a();
    }
}

報錯

這段代碼之所以報錯是因為,Test2的方法a比父類的a權限小,但反過是可以的。

完。


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

    AutoPoster 發表在 痞客邦 留言(0) 人氣()