<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                對象的轉型 ~~~ package obj.b8; /** 對象的轉型: 1.對象的向上轉型 子類轉成父類 默認進行 父類引用指向子類對象 2.對象的向下轉型 父類轉成子類 強制進行 關鍵字:instanceof 測試左邊的對象是否是右邊類的實例 ,如果是返回true,不是返回false */ class Animal{ void sleep(){ System.out.println("睡覺中"); } } class Cat extends Animal{ void catchMouse(){ System.out.println("捕鼠"); } } class Dog extends Animal{ } public class Test { public static void main(String[] args) { Animal a = new Cat();//向上 System.out.println(a instanceof Animal);//true System.out.println(a instanceof Cat);//true Cat c =(Cat)a;//向下 所以強制 a.sleep();//存在 //a.catchMouse();//不存在//將貓當動物看待 c.sleep();//存在 c.catchMouse();//存在 //Dog d =(Dog)a;//編譯沒錯,但運行會出現類型不匹配錯誤 } } ~~~ 多態的概述 ~~~ package obj.b9; /* OOP三大特寫:封裝,繼承,多態 多態:可以理解為事物存在的多種體現形態 動物:貓,狗,豬 人:男人 女人 */ class Animal{ void sing(){ System.out.println("唱歌"); } } class Dog extends Animal{ void sing(){ System.out.println("汪汪汪唱歌"); } } class Cat extends Animal{ void sing(){ System.out.println("喵喵喵唱歌"); } void catchMouse(){ System.out.println("捕鼠"); } } public class Test { public static void main(String[] args) { Cat a=new Cat(); Dog b=new Dog(); /*a.sing(); b.sing();*/ function(a); function(b); } /*public static void function(Cat c){ c.sing(); } public static void function(Dog c){ c.sing(); }*/ public static void function(Animal c){ c.sing(); } } ~~~ ~~~ 1.多態的體現 父類引用指向子類對象 2.多態的前提 (1)必須得類與類之間存在關系,可以是繼承關系,也可以是實現關系 (2)必須得重寫 3.多態的好處 大大提高了程序的可擴展性 4.多態的弊端 只能用父類的引用,訪問到父類中的成員 多態成員變量的特點: 1.編譯期間:參閱的是引用型變量所屬的類中是否有調用的方法 2.運行期間:參閱對象所屬的類中是否有調用的方法 ~~~ 對比: 沒有多態 ~~~ package obj.c1; import java.util.*; class FK{ void bx(){ System.out.println("變形"); } } class FK_szx extends FK{//山字型 void bx(){ System.out.println("山字型在變形"); } } class FK_lzx extends FK{//L字型 void bx(){ System.out.println("L字型在變形"); } } class FK_zzx extends FK{//Z字型 void bx(){ System.out.println("Z字型在變形"); } } class FK_cfx extends FK{//長方形 void bx(){ System.out.println("長方形在變形"); } } public class Test { public static void main(String[] args) { Random r =new Random(); int a=r.nextInt(4);//0,1,2,3 switch(a){ case 0: FK_szx szx=new FK_szx(); szx.bx(); break; case 1: FK_lzx lzx=new FK_lzx(); lzx.bx(); break; case 2: FK_zzx zzx=new FK_zzx(); zzx.bx(); break; case 3: FK_cfx cfx=new FK_cfx(); cfx.bx(); break; } } } ~~~ 使用了多態 ~~~ package obj.c1; import java.util.*; class FK{ void bx(){ System.out.println("變形"); } } class FK_szx extends FK{//山字型 void bx(){ System.out.println("山字型在變形"); } } class FK_lzx extends FK{//L字型 void bx(){ System.out.println("L字型在變形"); } } class FK_zzx extends FK{//Z字型 void bx(){ System.out.println("Z字型在變形"); } } class FK_cfx extends FK{//長方形 void bx(){ System.out.println("長方形在變形"); } } public class Test { public static void main(String[] args) { Random r =new Random(); int a=r.nextInt(4);//0,1,2,3 FK fk=null; switch(a){ case 0: fk=new FK_szx(); break; case 1: fk=new FK_lzx(); break; case 2: fk=new FK_zzx(); break; case 3: fk=new FK_cfx(); break; } fk.bx(); } } ~~~
                  <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>

                              哎呀哎呀视频在线观看