<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國際加速解決方案。 廣告
                ## [方法重載](https://lingcoder.gitee.io/onjava8/#/book/06-Housekeeping?id=%e6%96%b9%e6%b3%95%e9%87%8d%e8%bd%bd) 任何編程語言中都具備的一項重要特性就是命名。當你創建一個對象時,就會給此對象分配的內存空間命名。方法是行為的命名。你通過名字指代所有的對象,屬性和方法。良好命名的系統易于理解和修改。就好比寫散文——目的是與讀者溝通。 將人類語言細微的差別映射到編程語言中會產生一個問題。通常,相同的詞可以表達多種不同的含義——它們被"重載"了。特別是當含義的差別很小時,這會更加有用。你會說"清洗襯衫"、"清洗車"和"清洗狗"。而如果硬要這么說就會顯得很愚蠢:"以洗襯衫的方式洗襯衫"、"以洗車的方式洗車"和"以洗狗的方式洗狗",因為聽眾根本不需要區分行為的動作。大多數人類語言都具有"冗余"性,所以即使漏掉幾個詞,你也能明白含義。你不需要對每個概念都使用不同的詞匯——可以從上下文推斷出含義。 大多數編程語言(尤其是 C 語言)要求為每個方法(在這些語言中經常稱為函數)提供一個獨一無二的標識符。所以,你不能有一個`print()`函數既能打印整型,也能打印浮點型——每個函數名都必須不同。 在 Java (C++) 中,還有一個因素也促使了必須使用方法重載:構造器。因為構造器方法名肯定是與類名相同,所以一個類中只會有一個構造器名。那么你怎么通過不同的方式創建一個對象呢?例如,你想創建一個類,這個類的初始化方式有兩種:一種是標準化方式,另一種是從文件中讀取信息的方式。你需要兩個構造器:無參構造器和有一個**String**類型參數的構造器,該參數傳入文件名。兩個構造器具有相同的名字——與類名相同。因此,方法重載是必要的,它允許方法具有相同的方法名但接收的參數不同。盡管方法重載對于構造器是重要的,但是也可以很方便地對其他任何方法進行重載。 下例展示了如何重載構造器和方法: ~~~ // housekeeping/Overloading.java // Both constructor and ordinary method overloading class Tree { int height; Tree() { System.out.println("Planting a seedling"); height = 0; } Tree(int initialHeight) { height = initialHeight; System.out.println("Creating new Tree that is " + height + " feet tall"); } void info() { System.out.println("Tree is " + height + " feet tall"); } void info(String s) { System.out.println(s + ": Tree is " + height + " feet tall"); } } public class Overloading { public static void main(String[] args) { for (int i = 0; i < 5; i++) { Tree t = new Tree(i); t.info(); t.info("overloaded method"); } new Tree(); } } ~~~ 輸出: ~~~ Creating new Tree that is 0 feet tall Tree is 0 feet tall overloaded method: Tree is 0 feet tall Creating new Tree that is 1 feet tall Tree is 1 feet tall overloaded method: Tree is 1 feet tall Creating new Tree that is 2 feet tall Tree is 2 feet tall overloaded method: Tree is 2 feet tall Creating new Tree that is 3 feet tall Tree is 3 feet tall overloaded method: Tree is 3 feet tall Creating new Tree that is 4 feet tall Tree is 4 feet tall overloaded method: Tree is 4 feet tall Planting a seedling ~~~ 一個**Tree**對象既可以是一顆樹苗,使用無參構造器創建,也可以是一顆在溫室中已長大的樹,已經有一定高度,這時候,就需要使用有參構造器創建。 你也許想以多種方式調用`info()`方法。比如,如果你想打印額外的消息,就可以使用`info(String)`方法。如果你無話可說,就可以使用`info()`方法。用兩個命名定義完全相同的概念看起來很奇怪,而使用方法重載,你就可以使用一個命名來定義一個概念。
                  <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>

                              哎呀哎呀视频在线观看