刘妍东
摘 要 构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
关键词 java 构造方法 测试
中图分类号:TP311 文献标识码:A
1概念
构造方法是专门用于创建对象的方法,通常执行对成员变量赋值等初始化操作。构造方法有3个特性,一是一种特殊的成员方法,二是方法名与类名一致,三是方法定义中无返回值类型。我们先看一下构造方法的格式,中括号是可选项,修饰符为访问控制修饰符,如public,代表的是公共的方法。后面直接是方法名,要求方法名与类名一致,括号中是参数,根据需要可选。大括号中方法体内容主要为成员变量赋值。
[修饰符] 方法名([参数])
{//方法体}
2应用举例
我们通过一个列子来看一下构造方法的定义和使用。首先我们定义一个公共的构造方法,方法名与类名一致,括号中无参数,方法体为对radius成员变量赋值为5,则圆半径为5。在主方法中,注释掉为成员赋值语句。我们看一下运行结果,同样是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关键字后面的Circle括号,其实就是调用的构造方法。我们把不带参数的构造方法称之为默认的构造方法,同样我们把默认构造方法成员变量也应该赋值为默认值。或者什么都不写也自动赋为默认值。默认值半径为0,运行结果面积也为0。
构造方法我们可以定义多个,如我们定义一个带参数的构造方法,方法名与类名一致,带有一个double类型的参数。这样参数可以为double类型的成员变量赋值。定义一个c2对象,调用带参数的构造方法,参数为2,调用求面积方法看一下运行结果。第一个是半径为默认值0的面积,第二个是半径为指定值2的面积。
在上一个例子中只有一个成员变量,当类中存在多个成员变量时,应该如何定义构造方法呢。我们来看第二个例子。
在person类中,有5个成员变量,如果没有写构造方法,其实类中已经存在默认的构造方法了,一个成员方法outValue输出所有成员变量的值。通过定义对象调用默认的构造方法,再调用outValue方法输出所有值,我们看一下运行结果。运行结果中,都为默认值,数值型的为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();}
运行结果:姓名:null 性别:null 年龄:0 身高:0.0 体重:0.0
下面我们来定义构造方法,只要显式定义构造方法,则默认的构造方法就消失了,所以我们需要重新定义一下。我们再定义一个带参数的构造方法,参数的数据类型与成员变量的数据类型一定要一致。如给成员变量name赋值。我们定义对象p2,调用带一个参数的构造方法测试一下。参数值为字符串“张”。调用outValue方法看一下运行结果。
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();}
在第二行运行结果中,姓名值为zhang,其它未赋值的为默认值。
我们用同样的方法定义第三个构造方法,参数为name和age赋值。数据类型要一一对应。生成对象p3测试一下。调用的构造方法带两个参数,看一下运行结果,姓名和年龄,有值,其它为默认值。
运行结果:姓名:null 性别:null 年龄:0 身高:0.0 体重:0.0。 姓名:zhang 性别:null 年龄:0 身高:0.0 体重:0.0。姓名:王五 性别:男 年龄:19 身高:170.0 体重:50.0
3总结反思
回忆一下构造方法的概念,构造方法是专门用于创建对象的方法,构造方法名与类名一致,且无返回值类型。在没有定义构造方法的类中,有默认的构造方法,所有成员值为默认值。如果显式定义了构造方法,则默认的构造方法就取消了。下面大家来完成Person类的其他构造方法并测试一下吧。