劉妍東
摘 要 構(gòu)造方法是一種特殊的方法,它是一個與類同名且沒有返回值類型的方法。對象的創(chuàng)建就是通過構(gòu)造方法來完成,其功能主要是完成對象的初始化。當(dāng)類實例化一個對象時會自動調(diào)用構(gòu)造方法。構(gòu)造方法和其他方法一樣也可以重載。
關(guān)鍵詞 java 構(gòu)造方法 測試
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
1概念
構(gòu)造方法是專門用于創(chuàng)建對象的方法,通常執(zhí)行對成員變量賦值等初始化操作。構(gòu)造方法有3個特性,一是一種特殊的成員方法,二是方法名與類名一致,三是方法定義中無返回值類型。我們先看一下構(gòu)造方法的格式,中括號是可選項,修飾符為訪問控制修飾符,如public,代表的是公共的方法。后面直接是方法名,要求方法名與類名一致,括號中是參數(shù),根據(jù)需要可選。大括號中方法體內(nèi)容主要為成員變量賦值。
[修飾符] 方法名([參數(shù)])
{//方法體}
2應(yīng)用舉例
我們通過一個列子來看一下構(gòu)造方法的定義和使用。首先我們定義一個公共的構(gòu)造方法,方法名與類名一致,括號中無參數(shù),方法體為對radius成員變量賦值為5,則圓半徑為5。在主方法中,注釋掉為成員賦值語句。我們看一下運行結(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括號,其實就是調(diào)用的構(gòu)造方法。我們把不帶參數(shù)的構(gòu)造方法稱之為默認(rèn)的構(gòu)造方法,同樣我們把默認(rèn)構(gòu)造方法成員變量也應(yīng)該賦值為默認(rèn)值?;蛘呤裁炊疾粚懸沧詣淤x為默認(rèn)值。默認(rèn)值半徑為0,運行結(jié)果面積也為0。
構(gòu)造方法我們可以定義多個,如我們定義一個帶參數(shù)的構(gòu)造方法,方法名與類名一致,帶有一個double類型的參數(shù)。這樣參數(shù)可以為double類型的成員變量賦值。定義一個c2對象,調(diào)用帶參數(shù)的構(gòu)造方法,參數(shù)為2,調(diào)用求面積方法看一下運行結(jié)果。第一個是半徑為默認(rèn)值0的面積,第二個是半徑為指定值2的面積。
在上一個例子中只有一個成員變量,當(dāng)類中存在多個成員變量時,應(yīng)該如何定義構(gòu)造方法呢。我們來看第二個例子。
在person類中,有5個成員變量,如果沒有寫構(gòu)造方法,其實類中已經(jīng)存在默認(rèn)的構(gòu)造方法了,一個成員方法outValue輸出所有成員變量的值。通過定義對象調(diào)用默認(rèn)的構(gòu)造方法,再調(diào)用outValue方法輸出所有值,我們看一下運行結(jié)果。運行結(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();}
運行結(jié)果:姓名:null 性別:null 年齡:0 身高:0.0 體重:0.0
下面我們來定義構(gòu)造方法,只要顯式定義構(gòu)造方法,則默認(rèn)的構(gòu)造方法就消失了,所以我們需要重新定義一下。我們再定義一個帶參數(shù)的構(gòu)造方法,參數(shù)的數(shù)據(jù)類型與成員變量的數(shù)據(jù)類型一定要一致。如給成員變量name賦值。我們定義對象p2,調(diào)用帶一個參數(shù)的構(gòu)造方法測試一下。參數(shù)值為字符串“張”。調(diào)用outValue方法看一下運行結(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();}
在第二行運行結(jié)果中,姓名值為zhang,其它未賦值的為默認(rèn)值。
我們用同樣的方法定義第三個構(gòu)造方法,參數(shù)為name和age賦值。數(shù)據(jù)類型要一一對應(yīng)。生成對象p3測試一下。調(diào)用的構(gòu)造方法帶兩個參數(shù),看一下運行結(jié)果,姓名和年齡,有值,其它為默認(rè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)造方法是專門用于創(chuàng)建對象的方法,構(gòu)造方法名與類名一致,且無返回值類型。在沒有定義構(gòu)造方法的類中,有默認(rèn)的構(gòu)造方法,所有成員值為默認(rèn)值。如果顯式定義了構(gòu)造方法,則默認(rèn)的構(gòu)造方法就取消了。下面大家來完成Person類的其他構(gòu)造方法并測試一下吧。