构造方法
引言
构造方法很重要,但是比较鸡肋
定义
构造方法(Constructor
)的名称和类名相同,没有返回值类型。
作用
类中的特殊方法,用于创建对象,在创建对象的时候会执行一些初始化操作,如给成员属性赋初值
格式
格式:
类名([参数...]){}
Student(){}
注意:格式问题
1、构造方法的方法名与类名完全相同
2、构造方法没有返回值类型
3、创建对象时,触发构造方法的调用,不可手动调用
4、如果没有声明构造方法,编译器默认生成无参构造方法
5、如果定义了有参构造方法,编译器就不会创建无参构造方法
【强制要求】
无论什么时候,都要加上一个无参构造方法!!!
构造方法的使用
// 自定义有参构造方法,并给name属性赋值
Dog(String n) {
name = n;
}
// 自定义无参构造方法
Dog(){}
构造方法的重载
public Dog(String n){
name = n;
}
public Dog(String n, int i){
name = n;
age = i;
}
总结
- 构造方法是用来创建对象,在创建对象的过程中会进行初始化操作(为对象赋值)
- 构造方法也是方法,除了没有返回值,其他的都跟方法一样
按照方法参数列表的类型、个数、顺序去匹配,如果没有找到对应的就会报错
- 无论什么时候,都一定要给一个无参构造方法
扩展:反编译
javap -c -l -private 类名.class
扩展:对象的创建过程
1、类加载
2、内存中开辟对象空间
3、为各个属性赋予初始值
4、执行构造方法中的代码
5、将对象的地址赋值给变量
this关键字
概述
this代表所在类的对象引用,即当前对象
new 创建出来的对象
调用方法的对象
作用
1、调用本类中的属性和方法(区别成员变量和局部变量)
2、调用本类中的其他构造方法:this()
格式:
this([参数...]);
会根据参数列表调用对应的构造方法
public Rabbit(String color) {
// 调用本来中的属性
this.color = color;
}
public Rabbit(String color, int age, double weight) {
// 调用本类中的其他构造方法
this(color);
this.age = age;
this.weight = weight;
}
【注意】
1、this()只能在构造方法中使用
2、this()只能在第一行
3、构造方法中不能同时出现两个this(),因为2
4、不能自己调用自己,不能相互调用
规范化this()
class Son {
String name;
int age;
float salary;
public Son() {
}
public Son(String name) {
// 调用Son(String name, int age, float salary)
this(name, 0, 0.0F);
}
public Son(String name, int age) {
// 调用Son(String name, int age, float salary)
this(name, age, 0.0F);
}
public Son(String name, int age, float salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
}
总结
- this表示的是当前对象
- this可以调用本类中的属性和方法,最常用与区分成员变量和局部变量
- this还可以调用本类中的构造方法,但是要注意有坑
版权属于:不冷
本文链接:https://www.buleng.xyz/archives/38/
转载时须注明出处及本声明