1. 程式人生 > >關於Java方法重載

關於Java方法重載

pre 運行 system div animal sys void test ima

今天在做項目的時候發現一個問題,如果有兩個方法是重載的,而且他們的參數一個是父類,一個是子類,那麽調用的時候會調用哪個函數呢?

做了個測試,發現調用的是子類。

例子:

public class Animal {
    public Animal(){}    
}

他的一個子類:

public class Cat extends Animal {
    public Cat(){}
}

然後再Test類中實現兩個方法:

class Test{
    public static void main(String[] args){
        Cat cat = new Cat();
        animalTest(cat);
    }
    
private static void animalTest(Animal a){ System.out.println("wawa"); } private static void animalTest(Cat a){ System.out.println("miao"); } }

運行結果:

miao

如果把cat聲明為Animal的話,運行結果又變成了 wawa ,回去補一補Java多態,再回來更新。

關於Java方法重載