在java最常见的创建对象的方式是使用new关键字,new表示要创建新对象。凡是对象都是在堆内存中开辟空间。
例如以下代码:
public class Human {
String name;
String gender;
int age;
public void eat(){
System.out.println(this.name + "正在吃...");
}
public void think(){
System.out.println(this.name + "正在思考人生中...");
}
public static void main(String[] args){
Human h = new Human(); //使用new关键字创建对象,后面跟上构造方法Human();
h.eat();
h.think();
}
}
运行结果:
null正在吃...
null正在思考人生中...
创建对象时,用来初始化对象属性的方法称为构造方法。构造方法通常跟在new关键字后面,表示要初始化对象的属性。
注意:一个类如果用户自己没有显式地定义构造方法,那么默认存在一个无参的方法体为空的构造方法,例如上例中的Human类,默认存在如下的构造方法:
//默认存在的构造方法
Human(){
}
但是用户一旦自己定义了构造方法,那么这个默认的构造方法就不存在了。
构造方法通常有以下特征:
1)构造方法的名字名字和类名完全一致。
2)构造方法没有返回值类型,即便是void也不行。
3)构造方法经常重载。
例如,我们可以重新设计Human类,使它拥有带参和不带参两个构造方法。
public class Human {
String name;
String gender;
int age;
Human(){
System.out.println("一个人从世界上诞生了");
}
//这里出现了构造方法重载。
Human(String name,String gender,int age){
this(); //在构造方法中使用this关键字调用本类的其它构造方法。
this.name = name;
this.gender = gender;
this.age = age;
}
public void eat(){
System.out.println(this.name + "正在吃...");
}
public void think(){
System.out.println(this.name + "正在思考人生中...");
}
public static void main(String[] args){
Human h = new Human("张三","男",18); //使用new关键字创建对象,后面跟上构造方法Human(String,String,int);
h.eat();
h.think();
}
}
运行结果:
一个人从世界上诞生了
张三正在吃...
张三正在思考人生中...
1)通常使用new关键字创建新对象,new后面跟上这个类的构造方法,表示给对象属性的属性赋初值。
2)构造方法的作用就是给对象的属性赋初值。构造方法的名字和类名完全一致且没有返回类型,构造方法经常重载表示给属性赋初值的多种方式。