第十八課:多態(tài)性

特點

  • 對象的多態(tài)性: 分家導致的財產(chǎn)糾紛
  • 方法 的多態(tài)性:雙重事件

// 素食
interface Vegetarian{

}

class Bird{

}

class Animal{

    public void run(){

        System.out.println("Animal----Run is nature");
    }

    public void eat(){

        System.out.println("Animal----eat is nature");
    }
        public void eat(String str){

        System.out.println("Animal----eat is nature");
    }
    // public String toString(){

    //  return "fds";
    // }
}

public class Deer extends Animal implements Vegetarian{

    String name;
    public void run(){

        System.out.println("Deer----Run is nature");
    }

    public void sleep(){

        System.out.println("Deer----sleep is nature");
    }

    public String toString(){

        return  name + " is a deer";
    }
    public static void main(String[] args) {

        /*
        向上轉(類)型
        多態(tài)性是指對象能夠有多種形態(tài)。(主要體現(xiàn)在 1.方法的重載和重寫 2. 對象的多態(tài)性)
        在 OOP 中最常用的多態(tài)性發(fā)生在當父類引用指向孩子類對象時。
        */
        Deer d = new Deer();
        //父類引用指向孩子類對象
        Animal a = d;
        a.run();// Deer----Run is nature
        Vegetarian v = d;
        Object o = d;

        /*
            現(xiàn)在 Deer 類是多態(tài)的,因為他有多個繼承機制。針對上面的例子有以下說法:

            Deer 就是 Animal
            Deer 就是 Vegetarian
            Deer 就是 Deer
            Deer 就是 Object
        */
        // 所有的引用變量 d, a, v, o 引用同一個對象 Deer。
        System.out.println(d instanceof Deer);
        System.out.println(a instanceof Deer);
        System.out.println(v instanceof Deer);
        System.out.println(o instanceof Deer);

        /*
        對象的多態(tài)性
        向上轉(類)型:程序會自動完成
        父類 父類對象 = 子類實例  (該父類對象只能調用父子交集的部分)
        */
        Animal animal = new Deer();
        animal.run(); // 方法重寫
        animal.eat();
        // animal.sleep();// 不能被調用
        System.out.println("-----------------------");

        

        // 向下轉型: 強制類型轉換(一定先發(fā)生向上轉型 才能發(fā)生向下轉型)
        // 子類 子類對象 = (子類)父類實例
        // Animal ani = new Animal();  //ClassCastException 類型轉換異常
        Animal ani = new Deer();  
        Deer deer = (Deer)ani;
        deer.run();
        deer.eat();// 父類自己方法
        deer.sleep(); // 子類自己的方法
        deer.name = "dr";
        System.out.println(deer);

    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,813評論 11 349
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • 有些路 要走了 才知道對不對 有些事要做了 才知道該不該放棄 重新選擇
    一排森閱讀 189評論 0 1
  • 天空中下著蒙蒙細雨,公交車上的人非常擁擠,這時,上來了一位中年殘疾人,雙手拄著拐杖扶著扶手一步一步擠過人群坐到車...
    奈斯丨閱讀 97評論 0 0
  • 1. 培訓班老師做久了,經(jīng)常會遇到各種各樣奇葩的家長。前不久我接了一個二年級的學生專門補“看圖寫話”。 小男孩叫壯...
    沒無閱讀 1,165評論 4 11

友情鏈接更多精彩內容