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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                >[success] # java思考 ~~~ 1.首先模板方法需要抽象類的概念,什么是抽象類呢? 1.1抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造 方法的訪問方式和普通類一樣。 1.2由于抽象類不能實例化對象,所以抽象類必須被繼承 2.但在es5 是沒有抽象類的概念,'es6'可以實現偽抽象類或者使用'TS' 3.抽象類,不能被實例化,其實也是出于現實考慮的,書中舉了個例子: 3.1我們口渴了,去便利店想買一瓶飲料,我們不能直接跟店員說:“來一 瓶飲料。”如果我們這樣說了,那么店員接下來肯定會問:“要什么飲料?”飲料只是一個抽象名 詞,只有當我們真正明確了的飲料類型之后,才能得到一杯咖啡、茶、或者可樂。 3.2.根據這個例子可以分析得出,'抽象類'是一個沒有龐大概念的統稱,需要我們具體進一步去 實現里面的特性才能進而被使用 3.3 java 不是像js 天生多態,因此抽象方法讓子類繼承其實更好的還是為了向下轉型的驗證 ~~~ >[dsanger] ##### java 代碼的實現 ~~~ // Java 代碼 public abstract class Beverage { // 飲料抽象類 final void init(){ // 模板方法 boilWater(); brew(); pourInCup(); addCondiments(); } void boilWater(){ // 具體方法 boilWater System.out.println( "把水煮沸" ); } abstract void brew(); // 抽象方法 brew abstract void addCondiments(); // 抽象方法 addCondiments abstract void pourInCup(); // 抽象方法 pourInCup } public class Coffee extends Beverage{ // Coffee 類 @Override void brew() { // 子類中重寫 brew 方法 System.out.println( "用沸水沖泡咖啡" ); } @Override void pourInCup(){ // 子類中重寫 pourInCup 方法 System.out.println( "把咖啡倒進杯子" ); } @Override void addCondiments() { // 子類中重寫 addCondiments 方法 System.out.println( "加糖和牛奶" ); } } public class Tea extends Beverage{ // Tea 類 @Override void brew() { // 子類中重寫 brew 方法 System.out.println( "用沸水浸泡茶葉" ); } @Override void pourInCup(){ // 子類中重寫 pourInCup 方法 System.out.println( "把茶倒進杯子" ); } @Override void addCondiments() { // 子類中重寫 addCondiments 方法 System.out.println( "加檸檬" ); } } public class Test { private static void prepareRecipe( Beverage beverage ){ beverage.init(); } public static void main( String args[] ){ Beverage coffee = new Coffee(); // 創建 coffee 對象 prepareRecipe( coffee ); // 開始泡咖啡 // 把水煮沸 // 用沸水沖泡咖啡 // 把咖啡倒進杯子 // 加糖和牛奶 Beverage tea = new Tea(); // 創建 tea 對象 prepareRecipe( tea ); // 開始泡茶 // 把水煮沸 // 用沸水浸泡茶葉 // 把茶倒進杯子 // 加檸檬 } } ~~~
                  <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>

                              哎呀哎呀视频在线观看