1. 基本概念
程序要求“高内聚,低耦合”,这也就出现了封装
优点:
-
提高代码安全性
-
提高代码复用性
-
高内聚:封装细节,便于修改内部代码,提高可维护性
-
低耦合:简化外部调用,便于调用者使用,便于扩展和协作
通过访问控制符实现
修饰符 | 同一个类 | 同一个包中 | 子类 | 所有类 |
---|---|---|---|---|
private | * | |||
default | * | * | ||
protected | * | * | * | |
public | * | * | * | * |
关于protected的两个细节
-
若父类和子类在同一个包中,子类可以访问父类的protected成员,也可以访问父类对象的protected成员。
-
若父类和子类不在同一个包中,子类可以访问父类的protected成员,不能访问父类对象的protected成员。
2. 封装的使用细节
规则:
-
一般使用private访问权限
-
提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作
-
一些只用于本类的辅助性方法可以用private修饰,其他类调用的方法用public修饰
示例
public class Person2 {
private String name;
private int age;
private boolean flag;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age){
if(age<0||age>150) {
System.out.println("not 合法");
}else {
this.age = age;
}
}
public int getAge() {
return age;
}
public void setflag(boolean flag) {
this.flag = flag;
}
public boolean isFlag() {
return flag;
}
}
public class Test3 {
public static void main(String[] args){
Person2 p2 = new Person2();
p2.setAge(100);
System.out.println(p2.getAge());
}
}