最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java面向?qū)ο蟮姆庋b特征深度解析

 更新時(shí)間:2021年10月26日 15:17:35   作者:過(guò)氣老學(xué)長(zhǎng)  
在面向?qū)ο蟪淌皆O(shè)計(jì)方法中,封裝(英語(yǔ):Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝、隱藏起來(lái)的方法。封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類(lèi)的代碼和數(shù)據(jù)被外部類(lèi)定義的代碼隨機(jī)訪問(wèn)

在上一篇文章中,我們了解了面向?qū)ο蟮幕A(chǔ)內(nèi)容,這一篇將會(huì)更加深入地了解面向?qū)ο蟮奶卣鳌?/p>

面向?qū)ο笕筇卣?/h2>

面向?qū)ο笳Z(yǔ)言有三大特征:

  • 封裝
  • 繼承
  • 多態(tài)

封裝

對(duì)一個(gè)類(lèi)實(shí)現(xiàn)封裝,意味著限制其它類(lèi)對(duì)該類(lèi)數(shù)據(jù)的訪問(wèn)。

簡(jiǎn)單來(lái)講,封裝就是隱藏?cái)?shù)據(jù),就是保護(hù)對(duì)象的數(shù)據(jù)。對(duì)象,聽(tīng)起來(lái)總是那么地抽象,為了更好地理解封裝,我將對(duì)象具體指向人,從人的角度進(jìn)行講解。
在社會(huì)上生活的每一個(gè)人,總是會(huì)和其他人進(jìn)行交際,為了擴(kuò)充自己的人脈或者為了發(fā)生一些“思想上的碰撞”。

請(qǐng)?zhí)砑訄D片描述

但是,你總不會(huì)希望自己被一個(gè)毫不相識(shí)的人發(fā)現(xiàn)個(gè)人的隱私信息或者一些更加私密性的東西。所以,你希望將這些信息給保護(hù)起來(lái)。Java作為一種典型的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,自然也會(huì)為對(duì)象考慮。所以,保護(hù)對(duì)象的私密信息將是Java的一項(xiàng)重要任務(wù)。封裝就是保護(hù)對(duì)象的私密信息的一種體現(xiàn)。

在Java中,使用了很多技術(shù)實(shí)現(xiàn)封裝,接下來(lái)一一進(jìn)行講解。

private關(guān)鍵字——實(shí)現(xiàn)類(lèi)封裝

private用于限制變量的作用域,被private修飾的變量只能在該類(lèi)中使用,該類(lèi)的對(duì)象不能直接調(diào)用private變量。

先看一個(gè)例子

public class Person {
    private String name;
    private int age;
    private String sex;
}

在這個(gè)類(lèi)中定義了三個(gè)私有變量——name、age、sex。因?yàn)樗鼈儽?code>private所修飾,所以他們被稱(chēng)為私有域。對(duì)于私有域來(lái)說(shuō),他們不能通過(guò)對(duì)象進(jìn)行調(diào)用,只可以在類(lèi)中進(jìn)行使用。

在這里插入圖片描述

這是寫(xiě)在idea中的一段代碼,可以看到,當(dāng)使用Person類(lèi)對(duì)象進(jìn)行調(diào)用的時(shí)候,沒(méi)有顯示Person類(lèi)的三個(gè)屬性。如果直接調(diào)用,程序?qū)?huì)報(bào)錯(cuò):

在這里插入圖片描述

那么,在對(duì)象無(wú)法直接訪問(wèn)私有域的情況下,我們應(yīng)該怎樣查看對(duì)象的屬性?答案是使用訪問(wèn)器方法和更改器方法。

訪問(wèn)器方法和更改器方法

訪問(wèn)器方法:getXxx(),提供屬性的訪問(wèn)
更改器方法:setXxx(),對(duì)屬性進(jìn)行設(shè)置

通過(guò)更改器方法設(shè)置/修改屬性的值,通過(guò)訪問(wèn)器方法得到屬性的值。對(duì)上面的Person類(lèi)進(jìn)行修改:

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;
    }
}

包——類(lèi)的集合

在Java中,類(lèi)具有特別重要的地位,所有操作都是在類(lèi)中進(jìn)行定義,你不可能在類(lèi)外面寫(xiě)一段循環(huán)操作或者其他操作。

在這里插入圖片描述


為了讓程序員更加方便地尋找需要的類(lèi),Java的設(shè)計(jì)者引入了包的概念。

包(package):是一個(gè)類(lèi)似于文件夾的概念,可以將多個(gè)類(lèi)文件保存在一個(gè)包里面。

在這里插入圖片描述

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

在這里插入圖片描述

導(dǎo)入包

為了可以使用包中的類(lèi),使用import關(guān)鍵字導(dǎo)入指定的包,在導(dǎo)入包之后,就可以使用包中的類(lèi)。

import java.util.Date;	//導(dǎo)入java包下的Date類(lèi)

現(xiàn)在,思考一個(gè)問(wèn)題:如果導(dǎo)入的兩個(gè)包里有重名的類(lèi),那么我們應(yīng)該怎么區(qū)分這兩個(gè)類(lèi)呢?

答案是:使用包含報(bào)名的全類(lèi)名。以Date類(lèi)為例:
在Java中,有兩個(gè)Date類(lèi):一個(gè)位于java.util,另外一個(gè)位于java.sql,如果在一個(gè)程序中同時(shí)使用Date時(shí),需要加上包名。

import java.util.Date;	//由于有命名沖突的情況,只能導(dǎo)入一個(gè)包
public class Person {
    Date date;
    java.sql.Date dat;
}

或者也可以

import java.sql.Date
public class Person {
    Date date;
    java.util.Date dat;
}

從人的角度理解包

和之前一樣,我們不把對(duì)象視為一個(gè)抽象的、無(wú)法理解的概念,將它具體化,將它視為人,那么包又是什么?
如果你看過(guò)Java API或者對(duì)Java有一個(gè)比較深的了解,那么,你會(huì)發(fā)現(xiàn),包是有具體的功能的。更加具體地說(shuō),同一個(gè)包放同一個(gè)類(lèi)型的類(lèi)。例如:java.util包里面放置了一些工具類(lèi),java.sql包里面放置了一些用于數(shù)據(jù)庫(kù)連接的類(lèi)。java.io包里面放置了一些關(guān)于輸入輸出流的類(lèi)······
這樣,我們就可以這樣理解包:
在成長(zhǎng)的過(guò)程中,因?yàn)檫x擇的不同,每個(gè)人都有不同的職業(yè),醫(yī)生、廚師、工程師、程序員······,也就是說(shuō),包對(duì)應(yīng)著人類(lèi)社會(huì)中的職業(yè)。

請(qǐng)?zhí)砑訄D片描述

不加訪問(wèn)權(quán)限——實(shí)現(xiàn)包封裝

老話說(shuō)得好,隔行如隔山,每一個(gè)行業(yè)都有自己行業(yè)的一些潛在規(guī)則,每一個(gè)行業(yè)都有其他行業(yè)不了解的規(guī)則。那么,Java是如何實(shí)現(xiàn)這種包和包之間的信息封裝?看下面的代碼:

package doctors;

public class doctor {
    String name;	//行業(yè)名
    int exp;			//工作經(jīng)驗(yàn)
    int age;			//年齡
    String skill;	//行業(yè)技能
}

上面的這段代碼就實(shí)現(xiàn)了包封裝。簡(jiǎn)單地說(shuō),就是不加任何修飾符。

在Java中,不加任何修飾符表示該變量可以被包中的任何一個(gè)類(lèi)使用。

總結(jié)

封裝性是面向?qū)ο蟮囊环N基本特性,它的出現(xiàn)主要是為了保護(hù)信息的安全。從人的視角看,封裝就是不愿意分享自己小秘密的一種體現(xiàn)。

到此這篇關(guān)于Java面向?qū)ο蟮姆庋b特征深度解析的文章就介紹到這了,更多相關(guān)Java 封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring的定時(shí)任務(wù)@Scheduled源碼詳解

    Spring的定時(shí)任務(wù)@Scheduled源碼詳解

    這篇文章主要介紹了Spring的定時(shí)任務(wù)@Scheduled源碼詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個(gè)注解,主要是用來(lái)開(kāi)啟定時(shí)任務(wù),本文提供了部分實(shí)現(xiàn)代碼與思路,需要的朋友可以參考下
    2023-09-09
  • Java之如何讀取Excel獲取真實(shí)行數(shù)

    Java之如何讀取Excel獲取真實(shí)行數(shù)

    這篇文章主要介紹了Java之如何讀取Excel獲取真實(shí)行數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-06-06
  • 詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程

    詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程

    這篇文章主要介紹了詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • DragChartPanel可拖拽曲線應(yīng)用詳解

    DragChartPanel可拖拽曲線應(yīng)用詳解

    這篇文章主要為大家詳細(xì)介紹了DragChartPanel可拖拽曲線的應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Springboot居然可以設(shè)置動(dòng)態(tài)的Banner(推薦)

    Springboot居然可以設(shè)置動(dòng)態(tài)的Banner(推薦)

    這篇文章主要介紹了Springboot居然可以設(shè)置動(dòng)態(tài)的Banner,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 當(dāng)Mybatis遇上目錄樹(shù)超全完美解決方案

    當(dāng)Mybatis遇上目錄樹(shù)超全完美解決方案

    這篇文章主要介紹了當(dāng)Mybatis遇上目錄樹(shù)有哪些解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java樹(shù)形結(jié)構(gòu)遞歸查詢(xún)方式

    Java樹(shù)形結(jié)構(gòu)遞歸查詢(xún)方式

    文章介紹了Java中實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)遞歸查詢(xún)的方法,首先找出所有的根節(jié)點(diǎn),然后通過(guò)循環(huán)遍歷根節(jié)點(diǎn),找到每個(gè)根節(jié)點(diǎn)的子節(jié)點(diǎn),最終構(gòu)建完整的樹(shù)形結(jié)構(gòu),這是一種有效的遞歸查詢(xún)思路,適用于需要層次化展示數(shù)據(jù)的場(chǎng)景
    2024-12-12
  • Java通過(guò)百度地圖API獲取定位(普通IP定位)的方法教程

    Java通過(guò)百度地圖API獲取定位(普通IP定位)的方法教程

    這篇文章主要介紹了Java通過(guò)百度地圖API獲取定位的方法教程,首先說(shuō)明了實(shí)現(xiàn)這個(gè)功能的需求和初衷,然后詳細(xì)描述了利用百度地圖API實(shí)現(xiàn)這個(gè)功能的步驟,包括在百度地圖開(kāi)放平臺(tái)的準(zhǔn)備工作、學(xué)習(xí)官網(wǎng)API文檔、修改API的AK配置、Java代碼獲取定位等,需要的朋友可以參考下
    2024-11-11
  • Spring AOP注解實(shí)戰(zhàn)指南

    Spring AOP注解實(shí)戰(zhàn)指南

    在現(xiàn)代軟件開(kāi)發(fā)中,面向切面編程(AOP)是一種強(qiáng)大的編程范式,本文將介紹如何在Spring框架中通過(guò)AspectJ注解以及對(duì)應(yīng)的XML配置來(lái)實(shí)現(xiàn)AOP,在不改變主業(yè)務(wù)邏輯的情況下增強(qiáng)應(yīng)用程序的功能,需要的朋友可以參考下
    2024-06-06
  • Springboot加載所有Bean之后運(yùn)行方式

    Springboot加載所有Bean之后運(yùn)行方式

    這篇文章主要介紹了Springboot加載所有Bean之后運(yùn)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論

依安县| 昌平区| 龙岩市| 璧山县| 鸡泽县| 商都县| 旌德县| 信丰县| 龙州县| 罗江县| 泾阳县| 玉田县| 区。| 鹤岗市| 普兰店市| 渑池县| 桦南县| 开鲁县| 离岛区| 沙雅县| 怀化市| 兰西县| 宁陕县| 和田县| 长汀县| 阿图什市| 班玛县| 潢川县| 灌南县| 镇巴县| 林甸县| 会同县| 大厂| 遂平县| 日土县| 郑州市| 深水埗区| 田林县| 昭苏县| 定州市| 唐河县|