面向對象的第三個特徵----多態I

/*
 多態:
 某一種事物的多種存在形態。

 class 動物
 {}

 class 貓 extends 動物
 {}

 class 狗 extends 動物
 {}

 一個貓對象,存在了多種形態:

 動物 x = new 貓();//一個對象,兩種形態。

 父類創建的,指向了子類的對象。
 貓這類事物,既具備了貓的形態,又具備了動物的形態,
 這就是對象的多態性。

 簡單說,就是一個對象對應着不同類型。

 多態在代碼中的體現:
    父類或者接口的引用指向了子類的對象。

 多態的好處:
    提高了代碼的拓展性,前期定義的代碼可以使用後期的內容。

 多態的弊端:
    前期定義的內容不能調用後期子類的特有內容。

 多態的前提:
    1,必須有關係,繼承,實現。
    2,要有覆蓋。

 */
abstract class Animal
{
    abstract void eat();
}

class Dog extends Animal
{
    public void eat() {
        System.out.println("啃骨頭");
    }
}

class Cat extends Animal
{
    public void eat() {
        System.out.println("喫魚");
    }
    public void CatchMouse() {
        System.out.println("抓老鼠");
    }
}



public class DuoTaiDemo {

    public static void main(String[] args) {
//      Cat c = new Cat();
//      Dog d = new Dog();
//      c.eat();
//      d.eat();
//      method(new Cat());
//      method(new Dog());

        Animal a = new Cat();//自動類型提升,貓對象提升爲動物類型。
        a.eat();//但是會造成貓對象的特有功能無法被訪問。
                //其作用就是限制對特有功能的訪問。
                //專業上講:向上轉型。

        //如果還想使用貓的特有功能。
        //可以將對象進行向下轉型。
        Cat c = (Cat)a;//向下轉型的目的就是爲了調用特有方法。 
        c.CatchMouse();
    }
    public static void method(Animal a) {
        a.eat();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章