欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

封裝

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

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

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

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

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

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

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

先看一個(gè)例子

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

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

在這里插入圖片描述

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

在這里插入圖片描述

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

訪問器方法和更改器方法

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

通過更改器方法設(shè)置/修改屬性的值,通過訪問器方法得到屬性的值。對(duì)上面的Person類進(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;
    }
}

包——類的集合

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

在這里插入圖片描述


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

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

在這里插入圖片描述

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

在這里插入圖片描述

導(dǎo)入包

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

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

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

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

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

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

老話說得好,隔行如隔山,每一個(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)單地說,就是不加任何修飾符。

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

總結(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)文章

最新評(píng)論