Java面向?qū)ο蟮姆庋b特征深度解析
在上一篇文章中,我們了解了面向?qū)ο蟮幕A(chǔ)內(nèi)容,這一篇將會更加深入地了解面向?qū)ο蟮奶卣鳌?/p>
面向?qū)ο笕筇卣?/h2>
面向?qū)ο笳Z言有三大特征:
- 封裝
- 繼承
- 多態(tài)
封裝
對一個類實現(xiàn)封裝,意味著限制其它類對該類數(shù)據(jù)的訪問。
簡單來講,封裝就是隱藏數(shù)據(jù),就是保護對象的數(shù)據(jù)。對象,聽起來總是那么地抽象,為了更好地理解封裝,我將對象具體指向人,從人的角度進行講解。
在社會上生活的每一個人,總是會和其他人進行交際,為了擴充自己的人脈或者為了發(fā)生一些“思想上的碰撞”。

但是,你總不會希望自己被一個毫不相識的人發(fā)現(xiàn)個人的隱私信息或者一些更加私密性的東西。所以,你希望將這些信息給保護起來。Java作為一種典型的面向?qū)ο蟪绦蛟O(shè)計語言,自然也會為對象考慮。所以,保護對象的私密信息將是Java的一項重要任務(wù)。封裝就是保護對象的私密信息的一種體現(xiàn)。
在Java中,使用了很多技術(shù)實現(xiàn)封裝,接下來一一進行講解。
private關(guān)鍵字——實現(xiàn)類封裝
private用于限制變量的作用域,被private修飾的變量只能在該類中使用,該類的對象不能直接調(diào)用private變量。
先看一個例子
public class Person {
private String name;
private int age;
private String sex;
}
在這個類中定義了三個私有變量——name、age、sex。因為它們被private所修飾,所以他們被稱為私有域。對于私有域來說,他們不能通過對象進行調(diào)用,只可以在類中進行使用。

這是寫在idea中的一段代碼,可以看到,當使用Person類對象進行調(diào)用的時候,沒有顯示Person類的三個屬性。如果直接調(diào)用,程序?qū)箦e:

那么,在對象無法直接訪問私有域的情況下,我們應(yīng)該怎樣查看對象的屬性?答案是使用訪問器方法和更改器方法。
訪問器方法和更改器方法
訪問器方法:getXxx(),提供屬性的訪問
更改器方法:setXxx(),對屬性進行設(shè)置
通過更改器方法設(shè)置/修改屬性的值,通過訪問器方法得到屬性的值。對上面的Person類進行修改:
public class Person {
private String name;
private int age;
private String sex;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
}
包——類的集合
在Java中,類具有特別重要的地位,所有操作都是在類中進行定義,你不可能在類外面寫一段循環(huán)操作或者其他操作。

為了讓程序員更加方便地尋找需要的類,Java的設(shè)計者引入了包的概念。
包(package):是一個類似于文件夾的概念,可以將多個類文件保存在一個包里面。

引入包之后,類便可以“出現(xiàn)”重名的情況。只要保證這些類位于不同的包即可。

導入包
為了可以使用包中的類,使用import關(guān)鍵字導入指定的包,在導入包之后,就可以使用包中的類。
import java.util.Date; //導入java包下的Date類
現(xiàn)在,思考一個問題:如果導入的兩個包里有重名的類,那么我們應(yīng)該怎么區(qū)分這兩個類呢?
答案是:使用包含報名的全類名。以Date類為例:
在Java中,有兩個Date類:一個位于java.util,另外一個位于java.sql,如果在一個程序中同時使用Date時,需要加上包名。
import java.util.Date; //由于有命名沖突的情況,只能導入一個包
public class Person {
Date date;
java.sql.Date dat;
}
或者也可以
import java.sql.Date
public class Person {
Date date;
java.util.Date dat;
}
從人的角度理解包
和之前一樣,我們不把對象視為一個抽象的、無法理解的概念,將它具體化,將它視為人,那么包又是什么?
如果你看過Java API或者對Java有一個比較深的了解,那么,你會發(fā)現(xiàn),包是有具體的功能的。更加具體地說,同一個包放同一個類型的類。例如:java.util包里面放置了一些工具類,java.sql包里面放置了一些用于數(shù)據(jù)庫連接的類。java.io包里面放置了一些關(guān)于輸入輸出流的類······
這樣,我們就可以這樣理解包:
在成長的過程中,因為選擇的不同,每個人都有不同的職業(yè),醫(yī)生、廚師、工程師、程序員······,也就是說,包對應(yīng)著人類社會中的職業(yè)。

不加訪問權(quán)限——實現(xiàn)包封裝
老話說得好,隔行如隔山,每一個行業(yè)都有自己行業(yè)的一些潛在規(guī)則,每一個行業(yè)都有其他行業(yè)不了解的規(guī)則。那么,Java是如何實現(xiàn)這種包和包之間的信息封裝?看下面的代碼:
package doctors;
public class doctor {
String name; //行業(yè)名
int exp; //工作經(jīng)驗
int age; //年齡
String skill; //行業(yè)技能
}
上面的這段代碼就實現(xiàn)了包封裝。簡單地說,就是不加任何修飾符。
在Java中,不加任何修飾符表示該變量可以被包中的任何一個類使用。
總結(jié)
封裝性是面向?qū)ο蟮囊环N基本特性,它的出現(xiàn)主要是為了保護信息的安全。從人的視角看,封裝就是不愿意分享自己小秘密的一種體現(xiàn)。
到此這篇關(guān)于Java面向?qū)ο蟮姆庋b特征深度解析的文章就介紹到這了,更多相關(guān)Java 封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程
這篇文章主要介紹了詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
Springboot居然可以設(shè)置動態(tài)的Banner(推薦)
這篇文章主要介紹了Springboot居然可以設(shè)置動態(tài)的Banner,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Java通過百度地圖API獲取定位(普通IP定位)的方法教程
這篇文章主要介紹了Java通過百度地圖API獲取定位的方法教程,首先說明了實現(xiàn)這個功能的需求和初衷,然后詳細描述了利用百度地圖API實現(xiàn)這個功能的步驟,包括在百度地圖開放平臺的準備工作、學習官網(wǎng)API文檔、修改API的AK配置、Java代碼獲取定位等,需要的朋友可以參考下2024-11-11

