<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國際加速解決方案。 廣告
                # 4.1 用構造器自動初始化 對于方法的創建,可將其想象成為自己寫的每個類都調用一次`initialize()`。這個名字提醒我們在使用對象之前,應首先進行這樣的調用。但不幸的是,這也意味著用戶必須記住調用方法。在Java中,由于提供了名為“構造器”的一種特殊方法,所以類的設計者可擔保每個對象都會得到正確的初始化。若某個類有一個構造器,那么在創建對象時,Java會自動調用那個構造器——甚至在用戶毫不知覺的情況下。所以說這是可以擔保的! 接著的一個問題是如何命名這個方法。存在兩方面的問題。第一個是我們使用的任何名字都可能與打算為某個類成員使用的名字沖突。第二是由于編譯器的責任是調用構造器,所以它必須知道要調用是哪個方法。C++采取的方案看來是最簡單的,且更有邏輯性,所以也在Java里得到了應用:構造器的名字與類名相同。這樣一來,可保證象這樣的一個方法會在初始化期間自動調用。 下面是帶有構造器的一個簡單的類(若執行這個程序有問題,請參考第3章的“賦值”小節)。 ``` //: SimpleConstructor.java // Demonstration of a simple constructor package c04; class Rock { Rock() { // This is the constructor System.out.println("Creating Rock"); } } public class SimpleConstructor { public static void main(String[] args) { for(int i = 0; i < 10; i++) new Rock(); } } ///:~ ``` 現在,一旦創建一個對象: ``` new Rock(); ``` 就會分配相應的存儲空間,并調用構造器。這樣可保證在我們經手之前,對象得到正確的初始化。 請注意所有方法首字母小寫的編碼規則并不適用于構造器。這是由于構造器的名字必須與類名完全相同! 和其他任何方法一樣,構造器也能使用參數,以便我們指定對象的具體創建方式。可非常方便地改動上述例子,以便構造器使用自己的參數。如下所示: ``` class Rock { Rock(int i) { System.out.println( "Creating Rock number " + i); } } public class SimpleConstructor { public static void main(String[] args) { for(int i = 0; i < 10; i++) new Rock(i); } } ``` 利用構造器的參數,我們可為一個對象的初始化設定相應的參數。舉個例子來說,假設類`Tree`有一個構造器,它用一個整數參數標記樹的高度,那么就可以象下面這樣創建一個`Tree`對象: ``` tree t = new Tree(12); // 12英尺高的樹 ``` 若`Tree(int)`是我們唯一的構造器,那么編譯器不會允許我們以其他任何方式創建一個`Tree`對象。 構造器有助于消除大量涉及類的問題,并使代碼更易閱讀。例如在前述的代碼段中,我們并未看到對`initialize()`方法的明確調用——那些方法在概念上獨立于定義內容。在Java中,定義和初始化屬于統一的概念——兩者缺一不可。 構造器屬于一種較特殊的方法類型,因為它沒有返回值。這與`void`返回值存在著明顯的區別。對于`void`返回值,盡管方法本身不會自動返回什么,但仍然可以讓它返回另一些東西。構造器則不同,它不僅什么也不會自動返回,而且根本不能有任何選擇。若存在一個返回值,而且假設我們可以自行選擇返回內容,那么編譯器多少要知道如何對那個返回值作什么樣的處理。
                  <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>

                              哎呀哎呀视频在线观看