1. 程式人生 > 其它 >Java學習筆記(5):多型

Java學習筆記(5):多型

技術標籤:Java學習筆記java多型

一:多型的訪問特點

變數看父類,方法看子類,因為變數不能過載而方法可以過載

//父類
public class animal {
    int age = 10;
    public void eat()
    {
        System.out.println("動物吃東西");
    }
}
//子類
public class cat extends animal{
    int age = 20;
    @Override
    public void eat()
    {
        System.out.
println("貓吃魚"); } public void paly() { System.out.println("貓玩棒棒"); } } //測試類 public class Demo { public static void main(String[] args) { animal c = new cat(); System.out.println(c.age); c.eat(); c.play();//會報錯 } }

輸出:

10
貓吃魚

二:多型的向下轉型和向上轉型

從上面的訪問play方法報錯可看出,多型中不能訪問子類的特有方法,這個時候可以利用向下轉型來訪問

 public static void main(String[] args) {
        //向上轉型
        animal a = new cat();
        //向下轉型
        cat c = (cat) a;
        //這時就可以訪問play方法了
        a.eat();
        ((cat) a).paly();
        c.eat();
        c.paly();
    }

輸出:

貓吃魚
貓玩棒棒
貓吃魚
貓玩棒棒

三.多型的好處

當我們只有一個cat類時程式碼很簡單,但如果加入dog類甚至更多呢,那我們就得不斷更改,這時候我們就可以利用多型給我們帶來的好處了。

public class animaloperation {
    public void eat(animal a)
    {
        a.eat();
    }
}

我們可以加入一個管理類,從而實現只操作main函式就能增加更多的動物類,從而實現程式碼的簡潔和操作方便。

 Animal[] animals = new Animal[5];
        animals [0] = new cat();
        animals [1] = new dog();
        animals [2] = new wolf();
        animals [3] = new hippo();
        animals [4] = new lion();
        for(int i=0;i<animals.length;i++)
        {
            animals[i].eat();
            animals[i].roam();
        }
        //這就是多型最強的地方,可以將陣列中的元素逐個調出來當作是Animal來操作

ywqlove