<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Java 構造器 > 原文: [https://www.programiz.com/java-programming/constructors](https://www.programiz.com/java-programming/constructors) #### 在本教程中,您將在示例的幫助下了解 Java 構造器,如何創建和使用它們以及不同類型的構造器。 ## 什么是構造器? 在 Java 中,每個類都有其構造器,該構造器在創建該類的對象時會自動調用。 構造器類似于方法,但實際上,它不是方法。 [Java 方法](/java-programming/methods "Java Method")和 Java 構造器可以通過名稱和返回類型來區分。 構造器與類具有相同的名稱,并且不返回任何值。 例如, ```java class Test { Test() { // constructor body } } ``` 在這里,`Test()`是一個構造器。 它具有與該類相同的名稱,并且沒有返回類型。 ```java class Test { void Test() { // method body } } ``` 在此,`Test()`與該類具有相同的名稱。 但是,它具有返回類型`void`。 因此,它是一種方法,而不是構造器。 **推薦閱讀**: [構造器為什么不返回值](https://stackoverflow.com/questions/1788312/why-do-constructors-not-return-values) * * * ### 示例:Java 構造器 ```java class Main { private int x; // constructor private Main(){ System.out.println("Constructor Called"); x = 5; } public static void main(String[] args){ // constructor is called while creating object Main obj = new Main(); System.out.println("Value of x = " + obj.x); } } ``` **輸出**: ```java Constructor Called Value of x = 5 ``` 在上面的示例中,我們有一個名為`Main()`的`private`構造器。 在`main`方法內部,我們正在創建一個名為`obj`的對象。 ```java Main obj = new Main(); ``` 在此過程中,將調用構造器。 因此,將執行打印語句,并初始化變量`x`。 * * * ### 構造器的類型 在 Java 中,構造器可以分為 3 種類型: * 無參構造器 * 默認構造器 * 參數化構造器 * * * ### 無參構造器 Java 構造器可以具有或可以不具有任何參數(參數)。 如果構造器不接受任何參數,則稱為無參數構造器。 例如, ```java private Constructor() { // body of constructor } ``` * * * ### 無參數構造器的示例 ```java class Main { int i; // constructor with no parameter private Main(){ i = 5; System.out.println("Object created and i = " + i); } public static void main(String[] args) { // calling the constructor without any parameter Main obj = new Main(); } } ``` **輸出**: ```java Object created and i = 5 ``` 此處,構造器`Main()`不接受任何參數。 **您是否注意到`Main()`構造器的訪問修飾符是私有的?** 這是因為該對象是從同一類中實例化的。 因此,它可以訪問構造器。 但是,如果對象是在類外部創建的,則必須聲明構造器`public`才能訪問它。 例如: ```java class Company { String domainName; // public constructor public Company(){ domainName = "programiz.com"; } } public class Main { public static void main(String[] args) { // object is created in another class Company companyObj = new Company(); System.out.println("Domain name = "+ companyObj.domainName); } } ``` **輸出**: ```java Domain name = programiz.com ``` **推薦閱讀**: [Java 訪問修飾符](/java-programming/access-modifiers "Java Access Modifier") * * * ### 默認構造器 如果不創建任何構造器,則 Java 編譯器將在運行時自動創建無參數的構造器。 該構造器稱為默認構造器。 默認構造器使用默認值初始化所有未初始化的實例變量。 | 類型 | 默認值 | | --- | --- | | `boolean` | `false` | | `byte` | `0` | | `short` | `0` | | `int` | `0` | | `long` | `0l` | | `char` | `\u0000` | | `float` | `0.0f` | | `double` | `0.0d` | | `object` | `null` | * * * ### 示例:默認構造器 ```java class DefaultConstructor { int a; boolean b; public static void main(String[] args) { // A default constructor is called DefaultConstructor obj = new DefaultConstructor(); System.out.println("a = " + obj.a); System.out.println("b = " + obj.b); } } ``` **輸出**: ```java a = 0 b = false ``` 在上面的程序中,我們尚未初始化兩個變量`a`和`b`的值。 但是,當我們創建類的對象時,我們可以在輸出中看到這些值已使用某些值進行了初始化。 這是因為 Java 編譯器已自動創建了默認構造器。 構造器將使用默認值`0`和`false`初始化變量`a`和`b`的值。 上面的程序等效于: ```java class DefaultConstructor { int a; boolean b; // a private constructor private DefaultConstructor() { a = 0; b = false; } public static void main(String[] args) { // call the constructor DefaultConstructor obj = new DefaultConstructor(); System.out.println("a = " + obj.a); System.out.println("b = " + obj.b); } } ``` **輸出**: ```java a = 0 b = false ``` * * * ### 參數化構造器 與方法類似,我們可以將參數傳遞給構造器。 此類構造器稱為參數化構造器。 例如, ```java private Constructor (arg1, arg2, ..., argn) { // constructor body } ``` * * * ### 示例:參數化構造器 ```java class Vehicle { int wheels; // constructor accepting single value private Vehicle(int wheels){ this.wheels = wheels; System.out.println(wheels + " wheeler vehicle created."); } public static void main(String[] args) { // calling the constructor by passing single value Vehicle v1 = new Vehicle(2); Vehicle v2 = new Vehicle(3); Vehicle v3 = new Vehicle(4); } } ``` **輸出**: ```java 2 wheeler vehicle created. 3 wheeler vehicle created. 4 wheeler vehicle created. ``` 在上面的示例中,我們有一個名為`Vehicle()`的構造器。 構造器接受一個名為`wheel`的參數。 在這里,在創建對象時,我們將參數傳遞給構造器。 并且,基于該參數,它正在生成輸出。 * * * ## Java 中的構造器重載 與方法重載類似,我們也可以重載 Java 中的構造器。 如果您不熟悉方法重載,請訪問 [Java 方法重載](/java-programming/method-overloading "Java Method Overloading")。 在構造器重載中,有兩個或多個具有不同參數的構造器。 例如, ```java class Company { String domainName; // constructor with no parameter public Company(){ this.domainName = "default"; } // constructor with single parameter public Company(String domainName){ this.domainName = domainName; } public void getName(){ System.out.println(this.domainName); } public static void main(String[] args) { // calling the constructor with no parameter Company defaultObj = new Company(); // calling the constructor with single parameter Company programizObj = new Company("programiz.com"); defaultObj.getName(); programizObj.getName(); } } ``` **輸出**: ```java default programiz.com ``` 在上面的示例中,我們有兩個構造器:`public Company(`)和`public Company(String domainName)`。 在這里,兩個構造器都使用不同的值初始化變量`domainName`。 因此,基于所需的值,我們可以從`main()`方法中調用構造器。 注意,我們已經使用`this`關鍵字指定該類的變量。 要了解有關`this`關鍵字的更多信息,請訪問 [Java `this`關鍵字](/java-programming/this-keyword "Java this Keyword")。 * * * ## 重要筆記 * 實例化對象時,將隱式調用構造器。 * 創建構造器的兩個規則是: * 構造器的名稱應與類的名稱相同。 * Java 構造器不得具有返回類型。 * 如果類沒有構造器,則 Java 編譯器會在運行時自動創建**默認構造器**。 默認構造器使用默認值初始化實例變量。 例如,`int`變量將被初始化為`0` * 構造器類型: * **無參構造器** - 不接受任何參數的構造器 * **默認構造器** - 由 Java 編譯器自動創建的構造器(如果未明確定義)。 * **參數化構造器** - 接受參數的構造器 * 構造器不能是抽象的,靜態的或最終的。 * 構造器可以重載,但不能被覆蓋。
                  <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>

                              哎呀哎呀视频在线观看