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

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

Java培訓(xùn):默認(rèn)構(gòu)造方法

更新時(shí)間:2022年07月26日09時(shí)49分 來(lái)源:傳智教育 瀏覽次數(shù):

  在Java中的每個(gè)類(lèi)都至少有一個(gè)構(gòu)造方法,如果在一個(gè)類(lèi)中沒(méi)有定義構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)為這個(gè)類(lèi)創(chuàng)建一個(gè)默認(rèn)的構(gòu)造方法,這個(gè)默認(rèn)的構(gòu)造方法沒(méi)有參數(shù),方法中沒(méi)有任何代碼,即什么也不做。

  下面程序中Student類(lèi)的兩種寫(xiě)法,效果是完全一樣的。

  第一種寫(xiě)法:

class student {
}

  第二種寫(xiě)法:

class Student {
    public Student () {
    }
}

  對(duì)于第一種寫(xiě)法,類(lèi)中雖然沒(méi)有聲明構(gòu)造方法,但仍然可以用new Student()語(yǔ)句創(chuàng)建Student類(lèi)的實(shí)例對(duì)象,在實(shí)例化對(duì)象時(shí)調(diào)用默認(rèn)的構(gòu)造方法。

  由于系統(tǒng)提供的構(gòu)造方法往往不能滿(mǎn)足需求,因此,通常需要程序員自己在類(lèi)中定義構(gòu)造方法,一旦類(lèi)定義了構(gòu)造方法,系統(tǒng)就不再提供默認(rèn)的構(gòu)造方法了,具體代碼如下:

class Student {
    int age;
    public Student (int n) {
        age = n;
    }
}

  上面的Student類(lèi)中定義了一個(gè)有參構(gòu)造方法,這時(shí)系統(tǒng)就不再提供默認(rèn)的構(gòu)造方法。下面再編寫(xiě)一個(gè)測(cè)試程序調(diào)用上面的Student類(lèi),如文件3-8所示。

  文件3-8 Example08.java

public class Example08 {
    public static void main (String[] args) {
        Student stu = new Student () ;      // 實(shí)例化Student對(duì)象
    }
}

  運(yùn)行文件3-8編譯器會(huì)報(bào)錯(cuò),錯(cuò)誤信息如圖3-13所示。

  圖3-13 文件3-8編譯錯(cuò)誤信息

  從圖3-13可以看出,編譯器提示無(wú)法將Student類(lèi)的無(wú)參構(gòu)造方法應(yīng)用到有參構(gòu)造方法,原因是調(diào)用new Student()創(chuàng)建Student類(lèi)的實(shí)例對(duì)象時(shí),需要調(diào)用無(wú)參構(gòu)造方法,而Student類(lèi)中定義了一個(gè)有參的構(gòu)造方法,系統(tǒng)不再提供無(wú)參的構(gòu)造方法。為了避免上面的錯(cuò)誤,在一個(gè)類(lèi)如果定義了有參構(gòu)造方法,最好再定義一個(gè)無(wú)參構(gòu)造方法。

  需要注意的是,構(gòu)造方法通常使用public進(jìn)行修飾。

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