天天看點

Java中函數的重載和重寫

重載

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

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
           
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();
    }
}

報錯