1.构造方法
类中有一种特殊的成员方法,其方法名与类名相同,称为构造方法。下面是一个构造方法示例:
public class Puppy{
public Puppy(){}
public puppy(String name){
//这个构造仅有一个参数name
}
}
2.构造方法和对象的初始化
当使用new运算符实例化一个对象时,系统为对象创建内存区域,并自动调用构造方法初始化成员变量。下面是new运算符实例化一个对象。
Puppy p=new Puppy();
Puppy p1=new Puppy("懒大王");
3.构造方法的特点
(1).构造方法名与类名相同。
(2).构造方法没有返回值。
(3).在创建一个对象的时候,至少要调用一个构造方法。
(4).构造方法不能显式的直接调用。
(5).构造方法的主要作用是对对象初始化。
(6).每个类都有构造方法。如果没有显示地为类定义构造方法。JAVA编译器将会为该类提供一个默认构造方法。
(7).一个类中可以定义多个构造方法,但各构造方法的参数表不能相同,即各构造方法的参数个数不同或参数类型不同。
4.用构造方法初始化成员变量
class Triangle{
int x,y,z;
public Triangle(int i,int j,int k) //声明构造方法
{x=i;y=j;z=k;}
public static boolean judge(Triangle m)
{if(Math.sqrt(m.x*m.x+m.y*m.y)==Math.sqrt(m.z*m.z)) //引用Math类库的sqrt()方法
return true;
else
return false;
}
public static void main(String args[]){
Triangle t1=new Triangle(3,4,5);//实例化对象t1,调用构造方法对其进行初始化
if(judge(t1)) //调用judge()方法,判断t1的成员变量是否能构成一个直角三角形
System.out.println("这是一个直角三角形");
else
System.out.println("这不是一个直角三角形");
}
}
5.构造方法重载
class Time1{
private int hour;
private int minute;
private int second;
public Time1()
{setTime(0,0,0);}
public Time1(int hh)
{setTime(hh,0,0);}
public Time1(int hh,int mm)
{setTime(hh,mm,0);}
public Time1(int hh,int mm,int ss)
{setTime(hh,mm,ss);}
public void setTime(int hh,int mm,int ss)
{
hour=((hh>=0&&hh<24)?hh:0);
minute=((mm>=0&&mm<60)?mm:0);
second=((ss>=0&&ss<60)?ss:0);}
public String toString()
{
return(hour+":"+(minute<10?"0":"")+minute+":"+(second<10?"0":"")+second);
}
}
public class MyTime1
{
private static Time1 t0,t1,t2,t3;
public static void main(String args[])
{
t0=new Time1();
t1=new Time1(11);
t2=new Time1(22,22);
t3=new Time1(11,22,33);
System.out.println("t0="+t0.toString());
System.out.println("t1="+t1.toString());
System.out.println("t2="+t2.toString());
System.out.println("t3="+t3.toString());
}
}