封裝將複雜模塊或系統的邏輯實現細節隱藏,讓使用者只須要關心這個模塊或系統怎麼使用,而不用關心這個模塊或系統是怎麼實現的。編程
在面向對象的的編程中,咱們通常經過接口來描述某個系統或模塊具體什麼功能。安全
舉個通俗的例子:電視機的內部構造是極其複雜的,在須要對電視機進行「換臺」操做時,就須要操控電視機中的許多部件,最終才能實現換臺這個行爲,而普通用戶根本沒法完成這樣複雜的工做。所以,電視機的生產廠家就把這些功能封裝起來,對用戶僅僅配備一個接口:那就是遙控器!用戶僅須要經過遙控器簡單觸發按鈕,即可以實現複雜的操做,而不須要去了解電視機的內部構造及工做原理。學習
出於信息安全的考慮,咱們在定義屬性的時候就須要將其的權限設置爲私有(private);而設置爲私有的屬性就不能被外部類訪問了,如何解決?測試
這時就能夠將這些私有屬性封裝起來,對外部類僅開放幾個簡單接口來實現須要功能。this
再者,如若某個類的功能多,代碼量巨大,這時就能夠對外部提供幾個簡單的接口來實現功能(如輸入輸出),使用者無需知道實現功能的內部原理是什麼。spa
下面作一個簡單的示例:對象
第一個類:封裝類接口
package 封裝示例;
public class fengzhuang {
private String num;
private String name;
private int age;
private char sex;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public void print(){
System.out.println("num: "+num+"\nname: "+name+"\nage: "+age+"\nsex: "+sex);
}
}
第二個類:測試類,使用封裝類提供的接口完成功能get
package 封裝示例;
public class test {
public static void main(String[] args) {
fengzhuang fz=new fengzhuang();
fz.setNum("001");
fz.setName("Jane");
fz.setAge(21);
fz.setSex('F');
fz.print();
}
}
以上代碼中,變量num,name,age,sex都是私有屬性,外部類沒法訪問到,此時經過封裝類提供的接口來操做這些變量。string