1、基本语法
使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作
new执行过程:
- 为对象分配内存空间
- 调用对象的构造方法
语法规则:
- 方法名称必须和类名相同。
- 构造方法没有返回值类型声明。
- 每一个类中一定至少有一个构造方法(没有明确定义,系统会自动生成一个无参数的构造方法)。
注意:
- 若类中定义了构造方法,则默认的无参构造将不再生成。
- 构造方法支持重载,规则和普通方法一致。
class Person {
private String name;//实例成员变量
private int age;
private String sex;
//默认构造函数 构造对象
public Person() {
this.name = "caocao";
this.age = 10;
this.sex = "男";
}
//带有3个参数的构造函数
public Person(String name,int age,String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public void show(){
System.out.println("name: "+name+" age: "+age+" sex: "+sex);
}
}
public class Main{
public static void main(String[] args) {
Person p1 = new Person();//调用不带参数的构造函数 如果程序没有提供会调用不带参数的构造函数
p1.show();
Person p2 = new Person("zhangfei",80,"男");//调用带有3个参数的构造函数
p2.show();
}
}
// 执行结果
name: caocao age: 10 sex: 男
name: zhangfei age: 80 sex: 男
2、this关键字
this表示当前对象引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法。
class Person {
private String name;//实例成员变量
private int age;
private String sex;
//默认构造函数 构造对象
public Person() {
//this调用构造函数
this("bit", 12, "man");//必须放在第一行进行显示
}
//这两个构造函数之间的关系为重载。
public Person(String name,int age,String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public void show() {
System.out.println("name: "+name+" age: "+age+" sex: "+sex);
}
}
public class Main{
public static void main(String[] args) {
Person person = new Person();//调用不带参数的构造函数
person.show();
}
}
// 执行结果
name: bit age: 12 sex: man