<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 多態 ~~~java package com.dodoke.demo; public class Animal { protected String sex; protected int age; protected String color; protected String type; protected void sleep() { System.out.println("動物正在睡覺"); } /** * 動物叫 */ public void say() { System.out.println("動物叫"); } public Animal() { } public Animal(String type, int age) { this.type = type; this.age = age; } public Animal(String sex, int age, String color, String type) { super(); this.sex = sex; this.age = age; this.color = color; this.type = type; } } ~~~ ~~~java package com.dodoke.demo; public class Dog extends Animal { /** * 重寫實際上針對父類的方法進行修改 * 通常會在重寫的方法上加上注解 @Override * @param args */ @Override public void sleep() { System.out.println("狗正在躺著睡覺"); } /** * 重寫say方法 */ @Override public void say() { System.out.println("汪汪汪"); } public void play() { System.out.println("狗正在玩"); } } ~~~ ~~~java package com.dodoke.demo; public class Cat extends Animal { /** * 重寫say方法 */ @Override public void say() { System.out.println("喵喵喵"); } public void play() { System.out.println("貓正在玩"); } } ~~~ ~~~java package com.dodoke.demo; /** * 多態演示 * @author 一教室 * */ public class PolyStudy { public static void main(String[] args) { /** * 簡單的繼承和實例化對象 */ //數據類型 變量名 = new 數據類型構造器() Dog dog = new Dog(); dog.say(); Cat cat = new Cat(); cat.say(); //多態 Animal ani = null;//此時聲明變量,確定編譯的類型 ani = new Dog();//此時將調用構造器初始化出來的對象賦值給變量,確定運行時的類型 /** * 1. 創建一個Animal類型的變量anim變量 * 2. 在堆內存中開辟Dog類型的空間 * 3. 將Dog類型的空間地址賦給Animal類型的anim變量 */ //Animal car = new Car(); 編譯時類型和運行時類型得是父類和子類的關系 //多態的測試 ani.say();//因為運行時類型為Dog,所以Animal類型的ani實際引用的say方法,為Dog類中重寫的say方法 System.out.println("*******************"); //更換實現 ani = new Cat();//對ani重新賦值 ani.say(); } } ~~~ ~~~java package com.dodoke.demo; public class PolyStudy2 { public static void main(String[] args) { /** * 對象的轉型 * 對象向上轉型:子類對象->父類對象(由小變大)安全的 */ //實現多態,已經存在類型的轉化了 Animal ani = new Dog(); ani.say(); ani.sleep(); //ani.play();引用變量ani只能調用它編譯時類型Animal的方法,而不能調用其運行時類型Dog的方法 /** * 為什么要進行引用類型的強制類型轉換 * 如果必須要調用對象ani運行時的類型Dog類中的方法,則需要進行強制類型轉換。 */ /** * 對象的轉型 * 對象向下轉型:父類對象->子類對象(由大變小)不安全的 * 引用類型的強制類型轉換 * 對象向下轉型必須發生在向上轉型之后,才能進行向下轉型 */ //將Dog類型轉變為Dog類型 if(ani instanceof Dog) { Dog dog = (Dog) ani;//將ani強制轉變為Dog類型,編譯時類型和運行時類型都變成了Dog類型 dog.say(); dog.play(); } /** * 將Dog類型轉變為Cat類型 */ if(ani instanceof Cat) { Cat cat = (Cat) ani;//ani本質上是Dog類型,強制轉變為Cat類型會發生錯誤 cat.play(); cat.say(); } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看