更新時(shí)間:2022年07月26日09時(shí)49分 來(lái)源:傳智教育 瀏覽次數(shù):
在Java中的每個(gè)類都至少有一個(gè)構(gòu)造方法,如果在一個(gè)類中沒有定義構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)為這個(gè)類創(chuàng)建一個(gè)默認(rèn)的構(gòu)造方法,這個(gè)默認(rèn)的構(gòu)造方法沒有參數(shù),方法中沒有任何代碼,即什么也不做。
下面程序中Student類的兩種寫法,效果是完全一樣的。
第一種寫法:
class student { }
第二種寫法:
class Student { public Student () { } }
對(duì)于第一種寫法,類中雖然沒有聲明構(gòu)造方法,但仍然可以用new Student()語(yǔ)句創(chuàng)建Student類的實(shí)例對(duì)象,在實(shí)例化對(duì)象時(shí)調(diào)用默認(rèn)的構(gòu)造方法。
由于系統(tǒng)提供的構(gòu)造方法往往不能滿足需求,因此,通常需要程序員自己在類中定義構(gòu)造方法,一旦類定義了構(gòu)造方法,系統(tǒng)就不再提供默認(rèn)的構(gòu)造方法了,具體代碼如下:
class Student { int age; public Student (int n) { age = n; } }
上面的Student類中定義了一個(gè)有參構(gòu)造方法,這時(shí)系統(tǒng)就不再提供默認(rèn)的構(gòu)造方法。下面再編寫一個(gè)測(cè)試程序調(diào)用上面的Student類,如文件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類的無(wú)參構(gòu)造方法應(yīng)用到有參構(gòu)造方法,原因是調(diào)用new Student()創(chuàng)建Student類的實(shí)例對(duì)象時(shí),需要調(diào)用無(wú)參構(gòu)造方法,而Student類中定義了一個(gè)有參的構(gòu)造方法,系統(tǒng)不再提供無(wú)參的構(gòu)造方法。為了避免上面的錯(cuò)誤,在一個(gè)類如果定義了有參構(gòu)造方法,最好再定義一個(gè)無(wú)參構(gòu)造方法。
需要注意的是,構(gòu)造方法通常使用public進(jìn)行修飾。
北京校區(qū)