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

全國(guó)咨詢/投訴熱線:400-618-4000

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

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

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

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

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


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

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

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

·沒(méi)有任何返回值,包括void

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

·默認(rèn)返回類型就是對(duì)象類型本身

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


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

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

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

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


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

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

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

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

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

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

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

java構(gòu)造器用法

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

下面我們通過(guò)實(shí)例來(lái)演示Java構(gòu)造器的使用

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

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

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

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

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

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

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



猜你喜歡:

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

javase和javaee的區(qū)別

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

傳智教育JavaEE高手班課程

0 分享到:
和我們?cè)诰€交談!