1.封装的意思:
封装是面向对象三大特征之一。对于程序合理的封装让外部调用更加方便,更加利于写 作。同时,对于实现者来说也更加容易修正和改版代码。
2.编程中封装的具体优点:
(1)提高代码的安全性。
(2)提高代码的复用性。
(3) “高内聚”:封装细节,便于修改内部代码,提高可维护性。
(4)“低耦合”:简化外部调用,便于调用者使用,便于扩展和协作。
3.封装的实现——使用访问控制符
Java 是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。 Java 中 4 种“访问控制符”分别为 private、default、protected、public,它们说明了面向对 象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。
4.封装的使用细节
开发中封装的简单规则:
(1) 属性一般使用 private 访问权限。(2) 属性私有后, 提供相应的 get/set 方法来访问相关属性,这些方法通常是 public 修饰的,以提供对属性的赋值与读取操作(注意:boolean 变量的 get 方法是 is 开头!)。
(3) 方法:一些只用于本类的辅助性方法可以用 private 修饰,希望其他类调用的方法 用 public 修饰。
5.封装的使用
class Person {
private String name; private int age; public Person() {
}
public Person(String name, int age) {
this.name = name;
// this.age = age;//构造方法中不能直接赋值,应该调用 setAge 方法 setAge(age);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
//在赋值之前先判断年龄是否合法
if (age > 130 || age < 0) {
this.age = 18;//不合法赋默认值 18
} else {
this.age = age;//合法才能赋值给属性 age
}
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
public class Test2 {
public static void main(String[ ] args) { Person p1 = new Person();
//p1.name = "小红"; //编译错误
//p1.age = -45; //编译错误 p1.setName("小红");
p1.setAge(-45); System.out.println(p1);
Person p2 = new Person("小白", 300); System.out.println(p2);
}
}