1. 封装性(Encapsulation)
1.1 概述
封装是面向对象三大特征之一(封装、继承、多态),核心思想是隐藏内部细节,对外提供公共访问方式。
1.2 访问修饰符
- 1.2.1 public:公开的,类的内部和外部都可以访问
- 1.2.2 private:私有的,只能在本类内部访问,外部无法直接访问
1.3 成员变量与局部变量
- 1.3.1 成员变量:声明在类中方法外,整个类内都可访问,有默认值
- 1.3.2 局部变量:声明在方法内部,只在该方法内有效,无默认值
1.4 getter / setter 方法
封装的属性需要对外提供公共的访问方式,即 getter(取值)和 setter(赋值)方法。
- 1.4.1 getter 格式:有返回值,返回私有属性
public String getPassword() {
return password;
}- 1.4.2 setter 格式:有参数,修改私有属性
public void setPassword(String password) {
this.password = password;
}1.5 this 关键字
- 1.5.1 作用:当参数名与成员变量名相同时,用
this.成员变量名明确指代当前对象的成员变量,与局部参数区分
public void setPassword(String password) {
this.password = password; // this.password 是成员变量,password 是参数
}1.6 private 方法
- 1.6.1 私有方法:用
private修饰的方法,外部无法直接调用,只能在类的内部被其他方法调用
private void study() {
System.out.println("good good study, day day up");
}
public void show() {
System.out.println("这是show()方法");
study(); // 内部调用私有方法
}1.7 对象独立性回顾
- 1.7.1:每个对象拥有独立的成员变量,
person1修改密码不影响person的密码
person1.setPassword("789415");
System.out.println(person1.getPassword()); // 789415
System.out.println(person.getPassword()); // 0000002. 示例代码
2.1 Demo01
package com.itszt.day04;
public class Demo01 {
public static void main(String[] args) {
Person person = new Person();
System.out.println("person.age = " + person.age);
System.out.println("person.name = " + person.name);
Person person1 = new Person();
System.out.println(person1.getPassword()); // 000000
person1.setPassword("789415");
System.out.println(person1.getPassword()); // 789415
System.out.println(person.getPassword()); // 000000(各自独立)
person.show(); // 通过公共方法间接调用私有方法
}
}
class Person {
public int age;
public String name;
private String password = "000000";
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private void study() {
System.out.println("good good study, day day up");
}
public void show() {
System.out.println("这是show()方法");
study();
}
}2.2 Test
package com.itszt.day04;
public class Test {
public static void main(String[] args) {
Person person = new Person();
// System.out.println(person.password); // 报错:private 外部不可直接访问
// System.out.println(person.password = "456799"); // 报错:同上
}
}3. 总结
| 知识点 | 核心要点 |
|---|---|
| 封装 | 隐藏细节,对外提供公共访问方式 |
public | 类内外均可访问 |
private | 仅类内部可访问,外部直接访问报错 |
| 成员变量 | 类中方法外,有默认值 |
| 局部变量 | 方法内,无默认值 |
| getter | 对外提供读取私有属性的方法 |
| setter | 对外提供修改私有属性的方法 |
this | 区分同名成员变量与参数 |
| 私有方法 | 只能在类内部被调用 |