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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## [繼承語法](https://lingcoder.gitee.io/onjava8/#/book/08-Reuse?id=%e7%bb%a7%e6%89%bf%e8%af%ad%e6%b3%95) 繼承是所有面向對象語言的一個組成部分。事實證明,在創建類時總是要繼承,因為除非顯式地繼承其他類,否則就隱式地繼承 Java 的標準根類對象(Object)。 組合的語法很明顯,但是繼承使用了一種特殊的語法。當你繼承時,你說,“這個新類與那個舊類類似。你可以在類主體的左大括號前的代碼中聲明這一點,使用關鍵字**extends**后跟基類的名稱。當你這樣做時,你將自動獲得基類中的所有字段和方法。這里有一個例子: ~~~ // reuse/Detergent.java // (c)2017 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Inheritance syntax & properties class Cleanser { private String s = "Cleanser"; public void append(String a) { s += a; } public void dilute() { append(" dilute()"); } public void apply() { append(" apply()"); } public void scrub() { append(" scrub()"); } @Override public String toString() { return s; } public static void main(String[] args) { Cleanser x = new Cleanser(); x.dilute(); x.apply(); x.scrub(); System.out.println(x); } } public class Detergent extends Cleanser { // Change a method: @Override public void scrub() { append(" Detergent.scrub()"); super.scrub(); // Call base-class version } // Add methods to the interface: public void foam() { append(" foam()"); } // Test the new class: public static void main(String[] args) { Detergent x = new Detergent(); x.dilute(); x.apply(); x.scrub(); x.foam(); System.out.println(x); System.out.println("Testing base class:"); Cleanser.main(args); } } /* Output: Cleanser dilute() apply() Detergent.scrub() scrub() foam() Testing base class: Cleanser dilute() apply() scrub() */ ~~~ 這演示了一些特性。首先,在**Cleanser**的`append()`方法中,使用`+=`操作符將字符串連接到**s**,這是 Java 設計人員“重載”來處理字符串的操作符之一 (還有 + )。 第二,**Cleanser**和**Detergent**都包含一個`main()`方法。你可以為每個類創建一個`main()`; 這允許對每個類進行簡單的測試。當你完成測試時,不需要刪除`main()`; 你可以將其留在以后的測試中。即使程序中有很多類都有`main()`方法,惟一運行的只有在命令行上調用的`main()`。這里,當你使用**java Detergent**時候,就調用了`Detergent.main()`。但是你也可以使用**java Cleanser**來調用`Cleanser.main()`,即使**Cleanser**不是一個公共類。即使類只具有包訪問權,也可以訪問`public main()`。 在這里,`Detergent.main()`顯式地調用`Cleanser.main()`,從命令行傳遞相同的參數(當然,你可以傳遞任何字符串數組)。 **Cleanser**中的所有方法都是公開的。請記住,如果不使用任何訪問修飾符,則成員默認為包訪問權限,這只允許包內成員訪問。因此,如果沒有訪問修飾符,那么包內的任何人都可以使用這些方法。例如,**Detergent**就沒有問題。但是,如果其他包中的類繼承**Cleanser**,則該類只能訪問**Cleanser**的公共成員。因此,為了允許繼承,一般規則是所有字段為私有,所有方法為公共。(受保護成員也允許派生類訪問;你以后會知道的。)在特定的情況下,你必須進行調整,但這是一個有用的指南。 **Cleanser**的接口中有一組方法:`append()`、`dilute()`、`apply()`、`scrub()`和`toString()`。因為**Detergent**是從**Cleanser**派生的(通過**extends**關鍵字),所以它會在其接口中自動獲取所有這些方法,即使你沒有在**Detergent**中看到所有這些方法的顯式定義。那么,可以把繼承看作是復用類。如在`scrub()`中所見,可以使用基類中定義的方法并修改它。在這里,你可以在新類中調用基類的該方法。但是在`scrub()`內部,不能簡單地調用`scrub()`,因為這會產生遞歸調用。為了解決這個問題,Java的**super**關鍵字引用了當前類繼承的“超類”(基類)。因此表達式`super.scrub()`調用方法`scrub()`的基類版本。 繼承時,你不受限于使用基類的方法。你還可以像向類添加任何方法一樣向派生類添加新方法:只需定義它。方法`foam()`就是一個例子。`Detergent.main()`中可以看到,對于**Detergent**對象,你可以調用**Cleanser**和**Detergent**中可用的所有方法 (如`foam()`)。
                  <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>

                              哎呀哎呀视频在线观看