封裝:
封裝:面向對象三大特征之一:
将事務封裝成一個類,減少耦合,隐藏細節,保留特定的接口與外界聯系,當接口發生改變時,不會影響外部調用。
關于封裝:
封裝主要是為了增加程式的可讀性,解耦合,并且隐藏部分實作細節。
案例:
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.name = "小明";
student.age = 16;
student.printStudentAge();
Student student2 = new Student();
student2.name = "小白";
student2.age = 200;
student2.printStudentAge();
}
}
class Student {
String name;
int age;
public void printStudentAge() {
System.out.println(name + "同學的年齡:" + age);
}
}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn5EMjpnT4NGROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1UzM2EDNyITMwEjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
由此可見:小白的年齡為200,不符合實際情況,是以得進行一定的内部封裝,将内部代碼進行一次隐藏。
封裝後的代碼如下
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName("小明");
student.setAge(16);
student.printStudentAge();
Student student2 = new Student();
student.setName("小白");
student.setAge(200);
student2.printStudentAge();
}
}
class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 0 || age > 60)
throw new RuntimeException("年齡設定不合法");
this.age = age;
}
public void printStudentAge() {
System.out.println(name + "同學的年齡:" + age);
}
}
通過将Student這個類的name和age屬性私有化,隻有通過get/set方法才能進行通路,并且在get/set方法中我們可以對内部邏輯進行封裝處理,外部的調用不必關心我們的處理邏輯。