<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 7.3 覆蓋與重載 現在讓我們用不同的眼光來看看本章的頭一個例子。在下面這個程序中,方法`play()`的接口會在被覆蓋的過程中發生變化。這意味著我們實際并沒有“覆蓋”方法,而是使其“重載”。編譯器允許我們對方法進行重載處理,使其不報告出錯。但這種行為可能并不是我們所希望的。下面是這個例子: ``` //: WindError.java // Accidentally changing the interface class NoteX { public static final int MIDDLE_C = 0, C_SHARP = 1, C_FLAT = 2; } class InstrumentX { public void play(int NoteX) { System.out.println("InstrumentX.play()"); } } class WindX extends InstrumentX { // OOPS! Changes the method interface: public void play(NoteX n) { System.out.println("WindX.play(NoteX n)"); } } public class WindError { public static void tune(InstrumentX i) { // ... i.play(NoteX.MIDDLE_C); } public static void main(String[] args) { WindX flute = new WindX(); tune(flute); // Not the desired behavior! } } ///:~ ``` 這里還向大家引入了另一個易于混淆的概念。在`InstrumentX`中,`play()`方法采用了一個`int`(整數)數值,它的標識符是`NoteX`。也就是說,即使`NoteX`是一個類名,也可以把它作為一個標識符使用,編譯器不會報告出錯。但在`WindX`中,`play()`采用一個`NoteX`引用,它有一個標識符`n`。即便我們使用`play(NoteX NoteX)`,編譯器也不會報告錯誤。這樣一來,看起來就象是程序員有意覆蓋`play()`的功能,但對方法的類型定義卻稍微有些不確切。然而,編譯器此時假定的是程序員有意進行“重載”,而非“覆蓋”。請仔細體會這兩個術語的區別。“重載”是指同一樣東西在不同的地方具有多種含義;而“覆蓋”是指它隨時隨地都只有一種含義,只是原先的含義完全被后來的含義取代了。請注意如果遵守標準的Java命名規范,參數標識符就應該是`noteX`,這樣可把它與類名區分開。 在`tune`中,`InstrumentX i`會發出`play()`消息,同時將某個`NoteX`成員作為參數使用(`MIDDLE_C`)。由于`NoteX`包含了`int`定義,重載的`play()`方法的`int`版本會得到調用。同時由于它尚未被“覆蓋”,所以會使用基類版本。 輸出是: ``` InstrumentX.play() ```
                  <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>

                              哎呀哎呀视频在线观看