构造方法
类中在一种特殊的成员方法,其方法名与类名相同,成为构造方法。
示例:
public class Puppy{
public Puppy() {}
public Puppy(String name) {}
}
构造方法和对象的初始化
当使用new运算符实例化一个对象时,系统为对象创建内存区域并自动调用构造方法初始化成员变量。下面是new运算符实例化一个对象。
示例:
Puppy p=new Puppy();
Puppy p1=new Puppy("张三");
构造方法的特点
1.构造方法名与类名相同。
2.构造方法没有返回值。
3.在创建一个对象时,至少要调用一个构造方法。
4.构造方法不能显示地直5.接调用。
5.构造方法的主要作用是对对象初始化。
6.每个类都有构造方法。如果没有显式地为类定义构造方法java编译器会为该类提供一个默认的构造方法。
7.一个类可以定义多个构造方法,但各个构造方法的参数表不能相同,即参数个数不同或参数类型不同。
实例-----用构造方法初始化成员变量:
public 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))
return true;
else
return false;
}
public static void main(String args[]) {
Triangle t1=new Triangle(3,4,5);
if(judge(t1))
System.out.println("这是一个直角三角形");
else
System.out.println("这不是一个直角三角形");
}
}
实例-----构造方法重载:
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());
}
}