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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 創建類 – 如何創建對象? > 原文: [https://howtodoinjava.com/java/basics/how-to-create-a-class-in-java/](https://howtodoinjava.com/java/basics/how-to-create-a-class-in-java/) 在[*面向對象*](https://howtodoinjava.com/oops/object-oriented-principles/)范式中,類是編程的基本單位。 在本教程中,學習**編寫 Java 類**和**如何在 Java 中創建對象**。 ## 1\. 類與對象 在 Java 中,**對象**是具有數據結構的容器,它們具有**狀態和行為**。 對象代表系統或應用程序中的參與者。 例如,在 HR 應用程序中,參與者是雇員,經理,部門或報告。 對象是類的實例。 **類**是描述其對象的狀態和行為的模板。 ## 2\. 如何聲明一個類 在 Java 中聲明類的一般語法為: ```java <<modifiers>> class <<class name>> { // fields and members of the class } ``` * 類聲明可能具有**零個或多個修飾符**。 * 關鍵字`class`用于聲明一個類。 * `<<class name>>`是該類的用戶定義名稱,應為有效標識符。 * 每個類都有一個主體,該主體在一對大括號(`{…}`)中指定。 * 類的主體包含其不同的組件,例如字段,方法等。 例如, ```java public class Main { // Empty body for now; Write we own } ``` #### 2.1 類的類型 在 Java 中,可以有兩種類型的類。 1. **抽象類** - 這些類是`abstract`。 這些是**不完整的類**。 這意味著您無法創建此類的實例。 您只能擴展這些類以完成其規范。 2. **非抽象類** – 這些類定義其完整狀態和行為。 他們是完整的類。 您可以創建此類的對象。 ## 3\. Java 類的漸進性 在 Java 中,類用作**模板來創建對象**。 Java 中的類可能包含五個主要組件。 即: 1. 字段 2. 方法 3. 構造器 4. 靜態初始化器 5. 實例初始化器 **字段**和**方法**也被稱為**類成員**。 **構造器**和兩個**初始化器**都用于在類初始化期間使用,即使用類模板創建對象。 構造器用于創建類的對象。 我們必須為類至少具有**構造器**(如果我們明確聲明,則 JVM 為我們注入默認構造器)。 初始化器用于初始化類的字段。 我們可以有零個或多個靜態或實例類型的初始化器。 #### 3.1 字段 類的字段表示該類對象的屬性(也稱為狀態屬性)。 這些字段在類的主體內聲明。 在類中聲明字段的一般語法為: ```java public class Main // A field declaration <<modifiers>> <<data type>> <<field name>> = <<initial value>>; } ``` 假設`Human`類的每個對象都有兩個屬性:名稱和性別。 `Human`類應該包括兩個字段的聲明:一個代表姓名,另一個代表性別。 ```java public class Human { String name; String gender; } ``` `Human`類在此處聲明兩個字段:名稱和性別。 這兩個字段均為`String`類型。`Human`類的每個實例(或對象)都將具有這兩個字段的副本。 #### 3.2 方法 Java 方法是語句的集合,這些語句被組合在一起以執行操作。 方法通常用于修改類字段的狀態。 通過調用其他對象中的方法,方法也可以用于委派任務。 在 Java 中,方法可以: * 接受零個或多個參數 * 返回`void`或單個值 * 重載 – 意味著我們可以定義多個具有相同名稱但語法不同的方法 * 被覆蓋 – 意味著我們可以在父類和子類中使用相同的語法定義方法 ```java public class Human { String name; String gender; public void eat() { System.out.println("I am eating"); } } ``` #### 3.3 構造器 構造器是一個命名的代碼塊,用于在創建對象后立即初始化該類的對象。 構造器聲明的一般語法為: ```java <<Modifiers>> <<Constructor Name>>(<<parameters list>>) throws <<Exceptions list>> { // Body of constructor goes here } ``` * 構造器可以將其訪問修飾符設為`public`,`private`,`protected`或包級別(無修飾符)。 * 構造器名稱與類的簡單名稱相同。 * 構造器名稱后跟一對左括號和右括號,其中可能包含參數。 * 可選地,在右括號后面可以加上關鍵字`throws`,而關鍵字`throws`之后是逗號分隔的異常列表。 * 與方法不同,構造器沒有返回類型。 * 我們甚至不能將`void`指定為構造器的返回類型。 如果有任何返回類型,則為方法。 * 請記住,如果構造的名稱與類的簡單名稱相同,則它可以是方法或構造器。 如果指定返回類型,則為方法。 如果未指定返回類型,則為構造器。 #### 3.4 實例初始化塊 我們看到,構造器用于初始化類的實例。 實例初始化塊(也稱為**實例初始化器**)也用于初始化類的對象。 實例初始值設定項只是類體內的代碼塊,但不包括任何方法或構造器。 實例初始化器沒有名稱。 它的代碼只是放在開括號和閉括號內。 請注意,實例初始化器在實例上下文中執行,并且關鍵字`this`在實例初始化器中可用。 ```java public class Main { { //instance initializer block } } ``` * 一個類可以有多個實例初始化器。 * 對于我們創建的每個對象,所有初始化器都將按文本順序自動執行。 * 所有**實例初始化器的代碼都在任何構造器**之前執行。 * **實例初始化器不能具有`return`語句**。 * 除非所有已聲明的構造器在其`throws`子句中列出那些受檢的異常,否則它不會拋出受檢的異常。 ```java public class Main { //instance initializer { System.out.println("Inside instance initializer"); } //constructor public Main() { System.out.println("Inside constructor"); } public static void main(String[] args) { new Main(); } } Output: Inside instance initializer Inside constructor ``` #### 3.5 靜態初始化塊 * [靜態](https://howtodoinjava.com/oops/java-static-keyword/)初始化塊也稱為**靜態初始化器**。 * 它類似于實例初始化塊,但用于初始化類。 * 實例初始化器對每個對象執行一次,而靜態初始化器僅在將類定義加載到 JVM 中時對一個類執行一次。 * 為了區別于實例初始化器,我們需要在其聲明的開頭使用`static`關鍵字。 * 我們可以在一個類中有多個靜態初始化器。 * 所有靜態初始值設定項均按其出現的文本順序執行,并在任何實例初始值設定項之前執行。 靜態初始化器無法引發受檢異常。 它不能有一個`return`語句。 ```java public class Main { //static initializer static { System.out.println("Inside static initializer"); } //constructor public Main() { System.out.println("Inside constructor"); } public static void main(String[] args) { new Main(); } } Output: Inside static initializer Inside constructor ``` ## 4\. 如何創建對象? 在 Java 中,要通過類創建對象,請使用`new`關鍵字及其構造器之一。 ```java <<Class>> <<variable>> = new <<Call to Class Constructor>>; //e.g. Human human = new Human(); ``` 請記住,當我們不向類添加構造器時,Java 編譯器會為我們添加一個構造器。 Java 編譯器添加的構造器稱為**默認構造器**。 默認構造器不接受任何參數。 類的構造器的名稱與類的名稱相同。 在`new`運算符之后,將調用正在創建其實例的類的構造器。`new`運算符通過在堆中分配內存來創建類的實例。 ## 5\. `null`引用類型 Java 具有稱為`null`類型的特殊引用類型。 它沒有名字。 因此,我們不能定義空引用類型的變量。 空引用類型只有 Java 定義的一個值,即**空字面值**。 它只是`null`。 空引用類型是與任何其他引用類型兼容的分配。 也就是說,我們可以將空值分配給任何引用類型的變量。 實際上,存儲在[引用類型](https://howtodoinjava.com/java/basics/data-types-in-java/)變量中的空值表示該引用變量沒有引用任何對象。 ```java // Assign null value to john Human john = null; // john is not referring to any object john = new Human(); // Now, john is referring to a valid Human object ``` 請注意,`null`是`null`類型的字面值。 我們無法為[基本類型](https://howtodoinjava.com/java/basics/primitive-data-types-in-java/)變量分配`null`,因此 Java 編譯器不允許我們將基本值與`null`值進行比較。 這是有關在 Java 中創建類的非常基礎的教程的全部內容。 學習愉快! 了解更多信息: [Oracle Java Doc](https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html)
                  <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>

                              哎呀哎呀视频在线观看