教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java構(gòu)造器(構(gòu)造函數(shù))使用注意問題和實例教程【詳細介紹】

更新時間:2021年12月14日11時04分 來源:傳智教育 瀏覽次數(shù):

好口碑Java培訓(xùn)機構(gòu)

Java構(gòu)造器是什么?

Java構(gòu)造器指的是Java構(gòu)造方法(也叫“Java構(gòu)造函數(shù)”)。Java構(gòu)造方法是類的一種特殊方法,主要用來在創(chuàng)建和初始化一個類的新對象,簡化了對象初始化的代碼,總與new運算符一起使用在創(chuàng)建對象的語句中。需要注意的是一個類可以有多個構(gòu)造函數(shù),可根據(jù)其參數(shù)個數(shù)的不同或參數(shù)類型的不同來區(qū)分它們,即構(gòu)造函數(shù)的重載。


Java構(gòu)造器注意問題

·構(gòu)造器必須與主類同名

·可以有0 個、1個或多個參數(shù)

·沒有任何返回值,包括void

·構(gòu)造器可以重載

·默認返回類型就是對象類型本身

·只能與new運算符結(jié)合使用


Java構(gòu)造器的作用

1.初始化成員屬性,而不是初始化對象,初始化對象是通過new關(guān)鍵字實現(xiàn)的

2.通過new調(diào)用構(gòu)造方法初始化對象,編譯時根據(jù)參數(shù)簽名來檢查構(gòu)造函數(shù),稱為靜態(tài)聯(lián)編和編譯多態(tài)(參數(shù)簽名:參數(shù)的類型,參數(shù)個數(shù)和參數(shù)順序)

3.創(chuàng)建子類對象會調(diào)用父類構(gòu)造方法但不會創(chuàng)建父類對象,只是調(diào)用父類構(gòu)造方法初始化父類成員屬性


Java構(gòu)造器語法格式

class class_name {
    public class_name(){}    // 默認無參構(gòu)造方法
    public ciass_name([paramList]){}    // 定義構(gòu)造方法
    …
    // 類主體
}

Java構(gòu)造函數(shù)的種類

Java構(gòu)造方法主要分為無參構(gòu)造方法和有參構(gòu)造方法兩種,例如下面的案例:

public class MyClass {
    private int m;    // 定義私有變量
    MyClass() {
        // 定義無參的構(gòu)造方法
        m = 0;
    }
    MyClass(int m) {
        // 定義有參的構(gòu)造方法
        this.m = m;
    }
}

該示例定義了兩個構(gòu)造方法,分別是無參構(gòu)造方法和有參構(gòu)造方法。在一個類中定義多個具有不同參數(shù)的同名方法,這就是方法的重載。這兩個構(gòu)造方法的名稱都與類名相同,均為MyClass。在實例化該類時可以調(diào)用不同的構(gòu)造方法進行初始化。

注意:類的構(gòu)造方法不是要求必須定義的。如果在類中沒有定義任何一個構(gòu)造方法,則 Java 會自動為該類生成一個默認的構(gòu)造方法。默認的構(gòu)造方法不包含任何參數(shù),并且方法體為空。如果類中顯式地定義了一個或多個構(gòu)造方法,則 Java 不再提供默認構(gòu)造方法。

java構(gòu)造器用法

Java構(gòu)造器怎么用?

下面我們通過實例來演示Java構(gòu)造器的使用

1) 首先在員工類 Worker 中定義兩個構(gòu)造方法,代碼如下:

public class Worker {
    public String name;    // 姓名
    private int age;    // 年齡
    // 定義帶有一個參數(shù)的構(gòu)造方法
    public Worker(String name) {
        this.name = name;
    }
    // 定義帶有兩個參數(shù)的構(gòu)造方法
    public Worker(String name,int age) {
        this.name = name;
        this.age = age;
    }
    public String toString() {
        return "大家好!我是新來的員工,我叫"+name+",今年"+age+"歲。";
    }
}

在 Worker 類中定義了兩個屬性,其中 name 屬性不可改變。分別定義了帶有一個參數(shù)和帶有兩個參數(shù)的構(gòu)造方法,并對其屬性進行初始化。最后定義了該類的 toString() 方法,返回一條新進員工的介紹語句。

提示:Object 類具有一個 toString() 方法,該方法是個特殊的方法,創(chuàng)建的每個類都會繼承該方法,它返回一個 String 類型的字符串。如果一個類中定義了該方法,則在調(diào)用該類對象時,將會自動調(diào)用該類對象的 toString() 方法返回一個字符串,然后使用“System.out.println(對象名)”就可以將返回的字符串內(nèi)容打印出來。

2)在 TestWorker 類中創(chuàng)建 main() 方法作為程序的入口處,在 main() 方法中調(diào)用不同的構(gòu)造方法實例化 Worker 對象,并對該對象中的屬性進行初始化,代碼如下:

public class TestWorker {
    public static void main(String[] args) {
        System.out.println("-----------帶有一個參數(shù)的構(gòu)造方法-----------");
        // 調(diào)用帶有一個參數(shù)的構(gòu)造方法
        Worker worker1 = new Worker("張強");
        System.out.println(worker1);
        System.out.println("-----------帶有兩個參數(shù)的構(gòu)造方法------------");
        // 調(diào)用帶有兩個參數(shù)的構(gòu)造方法
        Worker worker2 = new Worker("李麗",25);
        System.out.println(worker2);
    }
}

在上述代碼中,創(chuàng)建了兩個不同的 Worker 對象:一個是姓名為張強的員工對象,一個是姓名為李麗、年齡為 25 的員工對象。對于第一個 Worker 對象 Worker1,并未指定 age 屬性值,因此程序會將其值采用默認值 0。對于第二個 Worker 對象 Worker2,分別對其指定了 name 屬性值和 age 屬性值,因此程序會將傳遞的參數(shù)值重新賦值給 Worker 類中的屬性值。



猜你喜歡:

Java高并發(fā)解決方案

javase和javaee的區(qū)別

單體架構(gòu)是什么?

傳智教育JavaEE高手班課程

0 分享到:
和我們在線交談!