詳解Java基礎之封裝
Java基礎知識(封裝)
封裝
那封裝是什麼呢?
在面向對象程式設計方法中,封裝(英語:Encapsulation)是指一種將抽象性函式接口的實現細節部分包裝、隱藏起來的方法。
封裝的目的
- 直接通過操控類對象來達到目的,不需要對具體實現十分瞭解,使類屬性和方法的具體實現對外不可見。不但方便還起到瞭保護作用。
- 封裝最主要的功能在於我們能修改自己的實現代碼,而不用修改那些調用我們代碼的程序片段。
- 適當的封裝可以讓程式碼更容易理解與維護,也加強瞭程式碼的安全性。
封裝的好處
- 良好的封裝能夠減少耦合。
- 類內部的結構可以自由修改。
- 可以對成員變量進行更精確的控制。
- 隱藏信息,實現細節。
封裝的步驟
1.修改屬性的可見性來限制對屬性的訪問(一般限制為private),
例如:
public class Person { private String name ; // 姓名 private String gender ; // 性別 private int age; // 年齡 }
這段代碼中,將 name 、sex和 age 屬性設置為私有的,隻能本類才能訪問,其他類都訪問不瞭,如此就對信息進行瞭隱藏。
2.對每個值屬性提供對外的公共方法訪問,也就是創建一對賦取值方法,用於對私有屬性的訪問
例如:
public class Person { private String name ; // 姓名 private String gender ; // 性別 private int age; // 年齡 public void setName(String name) { this.name = name; } public String getName() { return name; } public void setGender(String gender) { this.gender = gender; } public String gender(){ return gender; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }
采用 this 關鍵字調用本類中的屬性,也就是類中的成員變量。主要為瞭解決實例變量(private String name)和局部變量(setName(String name)中的name變量)之間發生的同名的沖突。
封裝的例子
創建一個用戶類User:
代碼如下:
package com.ygt.pojo; public class User { private String username; // 用戶名 private String password; // 密碼 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
編寫測試User的demo:EncapsulationDemo
代碼如下:
package com.ygt; import com.ygt.pojo.User; public class EncapsulationDemo { public static void main(String[] args) { User user = new User(); user.setUsername("最愛吃魚罐頭"); user.setPassword("520"); System.out.println("username: " + user.getUsername() + "-----------" + "password: " + user.getPassword()); } }
執行結果如下:
username:最愛吃魚罐頭———–password520
總結
相信各位看官都對封裝有深入的瞭解吧,那我們繼續期待更多Java基礎相關的內容吧!歡迎期待下一章的到來!
封裝實際上是將類的某些信息隱藏在類的內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的訪問和操作。就是把我們想提供給外界的一些方法給暴露出來,以便外界能調用到我們。
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- Java基礎-封裝和繼承
- 關於@Valid註解大全以及用法規范
- SpringBoot整合Mongodb實現增刪查改的方法
- java fastjson傳輸long數據卻接收到瞭int的問題
- 聊聊BeanUtils.copyProperties和clone()方法的區別