<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之旅 廣告
                >[success] # 多態 1. 多態主要指同一種事物表現出來的多種形態 >[danger] ##### 多態語法格式 ~~~ 父類類型 引用變量名 = new 子類類型(); ~~~ 例如 ~~~ Shape sr = new Rect() ~~~ >[danger] ##### 多態特點 1. 當父類類型的引用指向子類類型的對象時,父類類型的引用可以直接調用**父類獨有的方法** 2. 當父類類型的引用指向子類類型的對象時,父類類型的引用不可以直接調用**子類獨有的方法** 3. 對于父子類都有的非靜態方法來說,編譯階段調用父類版本,運行階段調用子類重寫的版本(**動態綁定**) 4. 對于父子類都有的靜態方法來說,編譯和運行階段都調用**父類版本** >[danger] ##### 案例 ~~~ 1.編程實現Shape類的封裝,特征有:橫縱坐標,要求提供打印所有特征的方法。 2.編程實現Rect類的封裝并繼承自Shape類,特征有:長度和寬度。 3.編程實現ShapeRectTest類,在main方法中分別創建Shape和Rect類型對象并打印特征。 ~~~ * 父類Shape ~~~ public class Shape { private int x; private int y; public Shape() { } public Shape(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public void show(){ System.out.println("橫坐標"+getX()+"縱坐標"+getY()); } } ~~~ * 子類 ~~~ public class Rect extends Shape{ private int len; private int wid; public Rect() { } public Rect(int x, int y, int len, int wid) { super(x, y); this.len = len; this.wid = wid; } public int getLen() { return len; } public void setLen(int len) { if(len>0){ this.len = len; }else{ System.out.println("長度不能為負數"); } } public int getWid() { return wid; } public void setWid(int wid) { if(wid>0){ this.wid = wid; }else{ System.out.println("寬度不能為負數"); } } @Override public void show() { super.show(); System.out.println("長度"+getLen()+"寬度是"+getWid()); } } ~~~ * 運行入口 ~~~ public class ShapeRectTest { // 此時傳入參數不一定是Rect 或者是Shape其他子類型,但如果類型寫死需要 // 利用重載寫多次對應類型,利用了多態此時一個入口方法即可 public static void getShow(Shape sr){ sr.show(); } public static void main(String[] args){ // 聲明 Shape 類型 Shape shape = new Shape(1,2); shape.show(); System.out.println("---------------------"); // 聲明 Rect 類型 Rect rect = new Rect(3,4,5,6); // 如果子類沒有重寫父類的show 方法此時用是父類show方法 rect.show(); System.out.println("---------------------"); // 聲明 Shape 類型指向 Rect Shape sr = new Rect(7,8,9,10); // 如果子類沒有重寫父類的show 方法此時用是父類show方法 // 如果子類重寫父類的show ,在編譯階段使用是父類show方法,在執行階段執行的子類show方法 sr.show(); // 使用多態特性 ShapeRectTest.getShow(new Rect(7,8,9,10)); ShapeRectTest.getShow(new Shape(7,8)); } } ~~~ >[danger] ##### 多態意義 1. 多態的實際意義在于屏蔽不同子類的差異性實現通用的編程帶來不同的效果 2. 使用多態的格式,此時父類類型引用直接調用的所有方法一定是父類中擁有的方法,若以后更換子類時,只需要將new關鍵字后面的子類類型修改而其它地方無需改變就可以立即生效,從而提高了代碼的可維護性和可擴展型。 ~~~ // 如果以后代碼編寫時候使用多態向上轉型后,此時未來代碼將要有改動更換類時候 // 只需將new 部分改動例如 Shape s = new Rect() 改 Shape s = new Clire(); 但下面的調用方法 // 無需更調用 或作為方法參時候去給改整體 Shape s = new Rect() s.getShow() ~~~ * 缺點 1. 父類引用不能直接調用子類獨有的方法,若調用則需要強制類型轉換
                  <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>

                              哎呀哎呀视频在线观看