构造方法
构造方法的定义(什么是构造方法?)
在类体中名字与类名相同的方法就叫构造方法
eg:Person p=new Person(); //声明Person类的引用,指向Person类型的对象
p.show(); //使用引用变量p调用show方法
语法格式
class 类名{
类名(形参列表){
构造方法体
}
}
package text;
public class Perple {
int age;
String name;
/*
这里没有定义构造方法,系统会自动产生默认构造方法
*/
// Perple(String n,int a){
// name=n;
// age=a;
// }
public void show(){
System.out.println("我的名字是:"+name+"我今年"+age+"岁了");
}
public static void main(String[] args) {
// People me=new Perple();
Perple me=new Perple();
me.show();
}
}
注意事项
1.构造方法的名称与类名要完全相同
2.构造方法没有返回值,就算是void类型也不能有
3.当使用new关键字构造对象时会自动调用构造方法进行成员变量的初始化工作(说白了构造方法就是为了初始化成员变量)
默认构造方法
当类体中没有定义任何形式的构造方法时,编译器会自动产生一个无参的空构造方法,就叫默认/缺省的构造方法(如:
Person(){}; 就是一个无参的空构造方法(无参指的是Person()方法没有参数,而空构造指的是{} 构造方法体中没有java语句)).
这里的编译器默认产生构造方法就和引用类型默认值为null一样,你不写编译器就会默认一个值,但你写了编译器就不会管了(也就是当你写了一个有参数的构造方法时,你就必须写一个无参的构造方法,为了防止编译发生错误,因为在你写了一个含参数的构造方法之后,编译器就不会产生默认构造方法,这个时候如果你在后面调用了无参的空构造方法,那么编译器就会出错)
package text;
public class Perple {
int age;
String name;
/*
这里我们自己创建了构造方法,所以系统不会再自动产生默认的构造方法,这时候我们再调用空构造方法就会出错,因为我们没有建立空构造方法
*/
Perple(String n,int a){
name=n;
age=a;
}
public void show(){
System.out.println("我的名字是:"+name+"我今年"+age+"岁了");
}
public static void main(String[] args) {
// People me=new Perple();
Perple me=new Perple("张三",25);
me.show();
}
}
构造方法中良好的编程习惯经验分享
1.有几个成员变量一般我们所定义的构造方法就有几个参数(我们使用构造方法的目的就是为了初始化成员变量)
2.只要类中有成员变量,且成员变量不全为常量时我们一般定义两个构造方法,一个是全属性做参数的构造方法,另一个是空构造方法(定义空构造方法是为了我们的编译器不报错)0
3.当类中的没有成员变量或者成员变量全部为常量时,我们一般不写构造方法(因为构造方法就是用来初始化成员变量的,而当类体中没有可初始化的成员变量时,也就没有必要建立构造方法了)