今天学习的内容是构造函数
上篇文章讲了定义对象的步骤:首先声明引用,并在内存(如果引用是静态变量就在方法区;是实例变量就在堆上;是局部变量就在帧栈上)中存储;然后在堆上创建对象;最后将对象赋给引用。这个过程中有一个疑问,创建对象时new操作符后面的“类()”是什么?这是方法?没错!这就是方法,准确的说是构造方法或者构造函数。
创建对象的同时必须通过调用构造函数来初始化对象,构造函数的知识点如下:
- 函数名与类名相同
- 没有返回值类型
- 如果没有定义构造函数,编译器会自动创建一个默认的无参构造函数
- 如果定义了构造函数(无论是否有参数),编译器就不会创建默认的无参构造函数
- 定义多个构造函数必须用方法重载
- 定义一个对象的顺序:加载类-->声明该类引用-->创建对象并调用构造函数初始化对象-->将对象赋给引用
- 如果自己定义了有参构造函数,最好再定义一个无参构造函数
示例程序:
public class Test24 {
private String name;
private Date date;
//不同方法重载版本的构造函数
public Test24(String name){
this.name=name;
System.out.println("object "+name+" has been constructed");
}
public Test24(String name,Date date){
this.name=name;
this.date=date;
System.out.println("object "+name+" has been constructed at "+date);
}
public static void main(String[] args){
//!new Test24();如果定义了构造函数,编译器就不会自动创建无参构造函数
new Test24("k");
new Test24("k",new Date());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}