J a v a 构造器与 t h i s 关键字 \huge{Java构造器与this关键字} Java构造器与this关键字
Java类构造器
作用
在类中定义用于初始化一个类的对象,并且返回对象的地址。(可以理解为就是创建一个对象)
调用实例
Car c = new Car(); //无参数调用格式
Car c = new Car("五菱宏光",6.66); //有参数调用格式
构造器格式与调用格式
分类
①. 无参数构造器:定义类的时候默认就拥有的,不管写不写都是可以调用的,会为成员变量赋值为初始值。
实例:
Car c = new Car(); //调用无参数构造器
//Car类定义
public class Car {
String name;
double price;
/**
无参数构造器(默认存在的)
*/
public Car(){
System.out.println("无参数构造器被触发执行~~~");
}
}
输出结果:
②.有参数构造器:定义构造器的时候加上参数,可以为定义的对象的成员变量进行初始化。
实例:
Car c = new Car("宝马X3", 37.89); //调用有参数构造器
//有参数构造器结构
public Car(String name, double price){
System.out.println("有参数构造器被触发执行~~~");
System.out.println(this);
this.name = name;
this.price = price;
}
调用结果:
❗❗注意事项
①. 只要是类定义出来了不管写不写都是默认都有无参数构造器的,都是可以直接调用的。
❗②. 如果自己后来又定义了有参数构造器,那么无参数构造器就会被“覆盖”掉,无法再次调用系统默认生成的无参数构造器了,如果还想要调用无参数构造器只能自己重新写一个了。
t h i s this this关键字
本质:this
关键字本质就是代指当前访问对象的地址。
作用
可以出现在构造器与方法之中用来指代当前对象的成员。
实例:
//调用有参数构造器并且打印c对象的地址
Car c = new Car("宝马X3", 37.89);
System.out.println(c);
//Car的有参数构造器
public Car(String name, double price){
System.out.println("有参数构造器被触发执行~~~");
System.out.println(this); //打印this中保存的内容
this.name = name;
this.price = price;
}
运行结果:
可以看到c
中保存的地址与this
中保存的地址相同。
应用场景
当传入参数与类的成员变量同名的时候,直接初始化等操作可能因为变量的定义域问题而覆盖掉导致无效操作。
//下面代码表面上好像是初始化了
//但是因为变量定义域的问题,这里的赋值是对于传入参数的赋值,并没有涉及到类的成员变量
public Car(String name, double price){
name = name;
price = price;
}
//用this来指代当前的对象
public Car(String name, double price){
this.name = name;
this.price = price;
}
//这才是将传入的name与price赋值给对象中的name与price
在成员方法中如果想要访问当前对象的成员则与上面同理。