1、封装
java中的封装
- 方法
- private关键字
1.1、private关键字
private int age;
本类之外的范围不能直接访问private
间接访问方法:定义一对Getter/Setter方法
此方法来设置private成员变量的数据,外部传参给这个方法
public void setAge(int num) {
age = num;
}
此方法获取private成员变量的属性,外部接受这个方法的返回值
public int getAge() {
return age;
}
注意:
- 方法名必须为setXxx或getXxx
- Setter不能有返回值,Getter不能有参数
- 可以在set方法中添加if条件控制参数的传递
- 对于boolean类型的private变量,Getter方法名一定为isXxx,setXxx规则不变
1.2、this关键字
当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。
如果需要访问本类当中的成员变量,需要使用格式:
this.成员变量名
通过谁调用的方法,谁就是this
public class Demo01Person {
public static void main(String[] args) {
Person person = new Person();
// 设置我自己的名字
person.name = "LC";
person.sayHello("CL");
System.out.println(person); // 地址值
}
}
public class Person {
String name;
public void sayHello(String name) {
System.out.println(name + ",你好。我是" + this.name);
System.out.println(this); // this的地址值与person相同
}
}
CL,你好。我是LC
cn.itclass.day04.demo05.Person@b1bc7ed
cn.itclass.day04.demo05.Person@b1bc7ed
2、构造方法
用于创建对象的方法,通过关键字new来创建对象时,就是在调用构造方法
方便将现成的数据通过参数的形式设置进来,而省去多次调用setXxx方法
setXxx方法就用于修改私有对象内容
格式:public 类名()
注意:
- 类名与所在类名完全一样
- 不要写void和返回值
- 不能产生返回值
- 不手动构造方法时,编译器默认构造一个无方法体的构造方法
- 构造方法也可重载(方法名相同,参数列表不同)
public class Student {
private String name;
private int age;
public Student() {
System.out.println("执行构造方法");
}
// 全参数的构造方法
public Student(String name, int age) {
System.out.println("全参构造方法执行");
this.name = name;
this.age = age;
}
// Getter/Setter类
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
public class demo02Student {
public static void main(String[] args) {
Student stu1 = new Student(); // 无参构造
System.out.println("==============");
Student stu2 = new Student("LC", 20); // 全餐构造
System.out.println("姓名:" + stu2.getName() + ",年龄" + stu2.getAge());
// 若需要改变对象中的成员变量数据内容,仍需使用setXxx的方法
stu2.setAge(21);
System.out.println("姓名:" + stu2.getName() + ",年龄" + stu2.getAge());
}
}