JAVA多態——類型判斷

abstract class Animal           //定義了一個動物類,其方法有吃東西
{
    abstract void eat();
}

class Dog extends Animal        //定義了一個繼承於動物類的狗類,其方法有 吃東西 和 看家
{
    void eat()
    {
        System.out.println("啃骨頭");
    }
    void lookHome()
    {
        System.out.println("看家");
    }
}
class Cat extends Animal        //定義了一個繼承於動物類的貓類,其方法有 吃東西 和 抓老鼠
{
    void eat()
    {
        System.out.println("吃魚");
    }
    void catchMouse()
    {
        System.out.println("抓老鼠");
    }
}

以上爲類定義。
要使用子類的特有方法,需要對定義的對象進行向下轉型

class Demo
{
//在method方法中執行對象通用的eat()方法,然後判斷對象具體類型,然後根據相應類型對對象進行向下轉型,然後執行對象的特殊方法。
    static void method(Animal a)
    {
        a.eat();
        // instanceof :用於判斷對象的具體類型,只能用於引用數據判斷,返回BOOL值
        if(a instanceof Cat)//如果a的類型爲Cat,爲真,否則爲假
        {
            Cat c = (Cat)a;
            c.catchMouse();
        }
        else if(a instanceof Dog)
        {
            Dog c = (Dog)a;
            c.lookHome();
        }
    }

    public static void main(String[] args)              
    {
        Dog d = new Dog();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章