(1)含义:
this是关键字,表示这个对象,本质this存储对象地址。
(2)应用:
1、如果成员变量与局部变量同名时,用于区分成员变量和局部变量。
2、用于访问构造方法。
(3)代码示例
class Person {
private String name = "刘备";//显示赋值
private int age = 18;
public void show() {
System.out.println(name + "..." + age);//刘备...18
}
//getter
public int getAge() {
return age;
}
public String getName() {
return name;
}
//setter
public void setAge(int age) {
if (age > 0 && age <= 120) {//如果年龄在0~120,则录入成功。
this.age = age;
}
}
public void setName(String name) {
this.name = name;
}
}
public class Demo5_封装 {
public static void main(String[] args) {
Person p = new Person();
p.setName("曹操");
p.setAge(20);
p.show();//曹操...18
}
}
构造方法
(1)概念:该方法的作用就是给对象的属性赋值。又称之为构造器。
(2)语法:
访问修饰符 方法名(参数列表){
属性名 = 参数名;
…
}
访问修饰符:暂时所有构造方法修饰符都是public。代表谁都可以构造该类的对象。
方法名:方法名要与类名一致
参数列表:有参数列表的构造方法,称之为带参的构造方法。无参数列表的构造方法,称之为无参的构造方法。参数个数必须等于或少于类的属性个数。
属性名 = 参数名:构造方法作用十分单一,就是通过参数给属性赋值。
//婴儿类
class Baby {
private int height;
private int weight;
//构造方法
public Baby(int height, int weight) {
this.height = height;
this.weight = weight;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
public class Demo7_构造方法 {
public static void main(String[] args) {
//需求:模拟婴儿的出生
//分析:婴儿(身高和体重) 出生(被创建)
//Baby bb = new Baby();
//bb.setHeight(60);
//bb.setWeight(6);
//问题:bb被创建后,才给他身高和体重。
//解决:在bb(对象)被创建之前,就必须有身高和体重。>>>构造方法
Baby bb = new Baby(60, 6);
System.out.println("身高为:" + bb.getHeight() + "...体重为:" + bb.getWeight());//身高为:60...体重为:6
}
}
(4)注意点
1)类中默认自带一个隐式无参构造方法。
2)当手动添加构造方法后,原隐式无参构造方法就消失。
3)当手动添加完构造方法后,仍需要使用原隐式构造方法,必须手动显式定义无参数构造方法。
4)构造方法可以使用方法的重载
5)构造方法是有JVM调用执行,程序员无法直接调用。
6)普通方法无法调用构造方法,因为构造方法的调用者不是程序员。
7)构造方法可以调用普通方法,但是一般不会这样用,因为构造方法只做属性赋值。
8)构造方法可以调用构造方法,使用this(参数)来调用。
9)构造方法使用this()调用其他构造方法时,this()必须时构造方法体中的第一句。
10)对象内存中运行流程:1、属性赋默认值 2、属性显式赋值 3、执行构造方法
构造方法内存图解