劉妍東
摘 要 構(gòu)造方法是一種特殊的方法,它是一個(gè)與類同名且沒(méi)有返回值類型的方法。對(duì)象的創(chuàng)建就是通過(guò)構(gòu)造方法來(lái)完成,其功能主要是完成對(duì)象的初始化。當(dāng)類實(shí)例化一個(gè)對(duì)象時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造方法。構(gòu)造方法和其他方法一樣也可以重載。
關(guān)鍵詞 java 構(gòu)造方法 測(cè)試
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
1概念
構(gòu)造方法是專門(mén)用于創(chuàng)建對(duì)象的方法,通常執(zhí)行對(duì)成員變量賦值等初始化操作。構(gòu)造方法有3個(gè)特性,一是一種特殊的成員方法,二是方法名與類名一致,三是方法定義中無(wú)返回值類型。我們先看一下構(gòu)造方法的格式,中括號(hào)是可選項(xiàng),修飾符為訪問(wèn)控制修飾符,如public,代表的是公共的方法。后面直接是方法名,要求方法名與類名一致,括號(hào)中是參數(shù),根據(jù)需要可選。大括號(hào)中方法體內(nèi)容主要為成員變量賦值。
[修飾符] 方法名([參數(shù)])
{//方法體}
2應(yīng)用舉例
我們通過(guò)一個(gè)列子來(lái)看一下構(gòu)造方法的定義和使用。首先我們定義一個(gè)公共的構(gòu)造方法,方法名與類名一致,括號(hào)中無(wú)參數(shù),方法體為對(duì)radius成員變量賦值為5,則圓半徑為5。在主方法中,注釋掉為成員賦值語(yǔ)句。我們看一下運(yùn)行結(jié)果,同樣是78.5。
public class Circle{double radius;public Circle}
public Circle2 (double x){radius=x;}
public double CalArea( ){return 3.14*radius*radius;}
Public static void main(String args){Circle c2=new Circle(5);System.out.println("c2:"+c2.CalArea;}
那這半徑的值是怎么傳遞的呢?我們看一下這一句,new關(guān)鍵字后面的Circle括號(hào),其實(shí)就是調(diào)用的構(gòu)造方法。我們把不帶參數(shù)的構(gòu)造方法稱之為默認(rèn)的構(gòu)造方法,同樣我們把默認(rèn)構(gòu)造方法成員變量也應(yīng)該賦值為默認(rèn)值。或者什么都不寫(xiě)也自動(dòng)賦為默認(rèn)值。默認(rèn)值半徑為0,運(yùn)行結(jié)果面積也為0。
構(gòu)造方法我們可以定義多個(gè),如我們定義一個(gè)帶參數(shù)的構(gòu)造方法,方法名與類名一致,帶有一個(gè)double類型的參數(shù)。這樣參數(shù)可以為double類型的成員變量賦值。定義一個(gè)c2對(duì)象,調(diào)用帶參數(shù)的構(gòu)造方法,參數(shù)為2,調(diào)用求面積方法看一下運(yùn)行結(jié)果。第一個(gè)是半徑為默認(rèn)值0的面積,第二個(gè)是半徑為指定值2的面積。
在上一個(gè)例子中只有一個(gè)成員變量,當(dāng)類中存在多個(gè)成員變量時(shí),應(yīng)該如何定義構(gòu)造方法呢。我們來(lái)看第二個(gè)例子。
在person類中,有5個(gè)成員變量,如果沒(méi)有寫(xiě)構(gòu)造方法,其實(shí)類中已經(jīng)存在默認(rèn)的構(gòu)造方法了,一個(gè)成員方法outValue輸出所有成員變量的值。通過(guò)定義對(duì)象調(diào)用默認(rèn)的構(gòu)造方法,再調(diào)用outValue方法輸出所有值,我們看一下運(yùn)行結(jié)果。運(yùn)行結(jié)果中,都為默認(rèn)值,數(shù)值型的為0,其他為null。
public class Person{String name,sex;int age;double height,weight;
public void outValue( ) {System.out.println("姓名:"+name+" 性別:"+sex+" 年齡:"+age+" 身高:"+height+" 體重:"+weight);}
public static void main(String args[]){Person p1=new Person();p1.outValue();}
運(yùn)行結(jié)果:姓名:null 性別:null 年齡:0 身高:0.0 體重:0.0
下面我們來(lái)定義構(gòu)造方法,只要顯式定義構(gòu)造方法,則默認(rèn)的構(gòu)造方法就消失了,所以我們需要重新定義一下。我們?cè)俣x一個(gè)帶參數(shù)的構(gòu)造方法,參數(shù)的數(shù)據(jù)類型與成員變量的數(shù)據(jù)類型一定要一致。如給成員變量name賦值。我們定義對(duì)象p2,調(diào)用帶一個(gè)參數(shù)的構(gòu)造方法測(cè)試一下。參數(shù)值為字符串“張”。調(diào)用outValue方法看一下運(yùn)行結(jié)果。
public class Person2{String name, sex;int age;double height, weight;Person2}
Person2(String n){·€╪ame=n;}
Person2(String n,String s,int a,double h,double w){name=n;sex=s;age=a;height=h;weight=w;public void outValue( ) { System.out.println("姓名:"+name+" 性別:"+sex+" 年齡:"+age+" 身高:"+height+" 體重:"+weight);}
public static void main(String args[]){Person2 p1=new Person2();p1.outValue();Person2 p2=new Person2("zhang");p2.outValue();;Person2 p3=new Person2("王五","男",19,170,50);p3.outValue();}
在第二行運(yùn)行結(jié)果中,姓名值為zhang,其它未賦值的為默認(rèn)值。
我們用同樣的方法定義第三個(gè)構(gòu)造方法,參數(shù)為name和age賦值。數(shù)據(jù)類型要一一對(duì)應(yīng)。生成對(duì)象p3測(cè)試一下。調(diào)用的構(gòu)造方法帶兩個(gè)參數(shù),看一下運(yùn)行結(jié)果,姓名和年齡,有值,其它為默認(rèn)值。
運(yùn)行結(jié)果:姓名:null 性別:null 年齡:0 身高:0.0 體重:0.0。 姓名:zhang 性別:null 年齡:0 身高:0.0 體重:0.0。姓名:王五 性別:男 年齡:19 身高:170.0 體重:50.0
3總結(jié)反思
回憶一下構(gòu)造方法的概念,構(gòu)造方法是專門(mén)用于創(chuàng)建對(duì)象的方法,構(gòu)造方法名與類名一致,且無(wú)返回值類型。在沒(méi)有定義構(gòu)造方法的類中,有默認(rèn)的構(gòu)造方法,所有成員值為默認(rèn)值。如果顯式定義了構(gòu)造方法,則默認(rèn)的構(gòu)造方法就取消了。下面大家來(lái)完成Person類的其他構(gòu)造方法并測(cè)試一下吧。