詳解Java基礎(chǔ)之封裝
Java基礎(chǔ)知識(shí)(封裝)
封裝
那封裝是什么呢?
在面向?qū)ο蟪淌皆O(shè)計(jì)方法中,封裝(英語(yǔ):Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝、隱藏起來(lái)的方法。
封裝的目的
- 直接通過(guò)操控類(lèi)對(duì)象來(lái)達(dá)到目的,不需要對(duì)具體實(shí)現(xiàn)十分了解,使類(lèi)屬性和方法的具體實(shí)現(xiàn)對(duì)外不可見(jiàn)。不但方便還起到了保護(hù)作用。
- 封裝最主要的功能在于我們能修改自己的實(shí)現(xiàn)代碼,而不用修改那些調(diào)用我們代碼的程序片段。
- 適當(dāng)?shù)姆庋b可以讓程式碼更容易理解與維護(hù),也加強(qiáng)了程式碼的安全性。
封裝的好處
- 良好的封裝能夠減少耦合。
- 類(lèi)內(nèi)部的結(jié)構(gòu)可以自由修改。
- 可以對(duì)成員變量進(jìn)行更精確的控制。
- 隱藏信息,實(shí)現(xiàn)細(xì)節(jié)。
封裝的步驟
1.修改屬性的可見(jiàn)性來(lái)限制對(duì)屬性的訪問(wèn)(一般限制為private),
例如:
public class Person {
private String name ; // 姓名
private String gender ; // 性別
private int age; // 年齡
}
這段代碼中,將 name 、sex和 age 屬性設(shè)置為私有的,只能本類(lèi)才能訪問(wèn),其他類(lèi)都訪問(wèn)不了,如此就對(duì)信息進(jìn)行了隱藏。
2.對(duì)每個(gè)值屬性提供對(duì)外的公共方法訪問(wèn),也就是創(chuàng)建一對(duì)賦取值方法,用于對(duì)私有屬性的訪問(wèn)
例如:
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 關(guān)鍵字調(diào)用本類(lèi)中的屬性,也就是類(lèi)中的成員變量。主要為了解決實(shí)例變量(private String name)和局部變量(setName(String name)中的name變量)之間發(fā)生的同名的沖突。
封裝的例子
創(chuàng)建一個(gè)用戶類(lèi)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;
}
}
編寫(xiě)測(cè)試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("最?lèi)?ài)吃魚(yú)罐頭");
user.setPassword("520");
System.out.println("username: " + user.getUsername() + "-----------"
+ "password: " + user.getPassword());
}
}
執(zhí)行結(jié)果如下:
username:最?lèi)?ài)吃魚(yú)罐頭-----------password520
總結(jié)
相信各位看官都對(duì)封裝有深入的了解吧,那我們繼續(xù)期待更多Java基礎(chǔ)相關(guān)的內(nèi)容吧!歡迎期待下一章的到來(lái)!
封裝實(shí)際上是將類(lèi)的某些信息隱藏在類(lèi)的內(nèi)部,不允許外部程序直接訪問(wèn),而是通過(guò)該類(lèi)提供的方法來(lái)實(shí)現(xiàn)對(duì)隱藏信息的訪問(wèn)和操作。就是把我們想提供給外界的一些方法給暴露出來(lái),以便外界能調(diào)用到我們。
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
JMeter 實(shí)現(xiàn)Java請(qǐng)求步驟及原理詳解
這篇文章主要介紹了JMeter 實(shí)現(xiàn)Java請(qǐng)求步驟及原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
springboot集成本地緩存Caffeine的三種使用方式(小結(jié))
本文主要介紹了springboot集成本地緩存Caffeine的三種使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
如何在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫(kù)
這篇文章主要介紹了在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫(kù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
spring boot項(xiàng)目同時(shí)傳遞參數(shù)和文件的多種方式代碼演示
這篇文章主要介紹了spring boot項(xiàng)目同時(shí)傳遞參數(shù)和文件的多種方式,在開(kāi)發(fā)接口中,遇到了需要同時(shí)接收參數(shù)和文件的情況,可以有多種方式實(shí)現(xiàn)文件+參數(shù)的接收,這里基于spring boot 3 + vue 3 + axios,做一個(gè)簡(jiǎn)單的代碼演示,需要的朋友可以參考下2023-06-06
IDEA連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程
項(xiàng)目開(kāi)發(fā)時(shí)使用Intellij IDEA連接本地?cái)?shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)可視化,還可對(duì)數(shù)據(jù)庫(kù)表直接進(jìn)行增刪改查操作,方便快捷又清晰,下面這篇文章主要給大家介紹了關(guān)于IDEA連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程,需要的朋友可以參考下2023-03-03
解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案
在本篇文章里小編給大家整理了關(guān)于解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案,有需要的朋友們可以學(xué)習(xí)下。2020-01-01

