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

Java面向?qū)ο蟮姆庋b你了解嗎

 更新時(shí)間:2022年03月28日 14:39:21   作者:厚積薄發(fā)?  
這篇文章主要為大家詳細(xì)介紹了Java面向?qū)ο蟮姆庋b,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

面向?qū)ο笏枷胫庋b

或許大家都聽說過java是純面向?qū)ο笳Z言,面向?qū)ο笏枷胍簿褪俏覀兂Uf的OOP,我們聽說最多的思想就是繼承,封裝,多態(tài),今天我們來講一講封裝。

什么是封裝呢?

封裝就是一種將數(shù)據(jù)和操作數(shù)據(jù)的方法進(jìn)行有機(jī)結(jié)合,一種函數(shù)抽象類的接口實(shí)現(xiàn)了對(duì)細(xì)節(jié)的封裝和隱藏,使得我們只需要調(diào)用對(duì)外開放的公共接口去實(shí)現(xiàn)與對(duì)象的交互。我們可以把封裝理解為一種保護(hù)的屏障,需要一些嚴(yán)格的接口進(jìn)行控制,我們可以修改自己實(shí)現(xiàn)類的內(nèi)部結(jié)構(gòu)的代碼,但是不可以修改那些公共接口。這就提供更好的安全性。

封裝的好處意義

  • 好的封裝能夠減少耦合度
  • 能夠?qū)Τ蓡T變量更精準(zhǔn)的控制
  • 實(shí)現(xiàn)對(duì)細(xì)節(jié)的封裝和隱藏,使得更具有安全性。
  • 可以修改類的內(nèi)部代碼,不用修改那些公共的接口

講到封裝那必然講到關(guān)鍵字private也就是訪問修飾限定符。

回憶一下我們見過哪些訪問修飾限定符呢?有public ,還有成員變量什么也不加的默認(rèn)權(quán)限英文是default,還有就是我們今天要講解的private,下一篇文章會(huì)講解protected。

那private到底有什么用處呢?

我們?cè)趤砘貞浺幌律掀恼轮v過的類和對(duì)象,下面我會(huì)創(chuàng)建一個(gè)學(xué)生類。

//創(chuàng)建一個(gè)學(xué)生類
class Student {
    public String name;//學(xué)生姓名
    public int age;//學(xué)生年齡
    public String sex;//學(xué)生性別
    public double score;//學(xué)生分?jǐn)?shù)
    public void sleep() {
        System.out.println("我要睡覺了?。?!");
    }
    public void eat() {
        System.out.println("我要干飯了?。。?);
    }
    public void exam() {
        System.out.println("我要考試了?。?!");
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Student student = new Student();//利用new關(guān)鍵字實(shí)例化一個(gè)對(duì)象
        student.age = 19;
        student.name = "厚積薄發(fā)";
        student.score = 99.9;
        student.sex = "男";
    }
}

以上的代碼我們將這個(gè)學(xué)生成員變量分別賦值。這樣寫會(huì)不會(huì)有什么不足呢?

想一想,如果我們每次要定義一個(gè)學(xué)生對(duì)象,每次都要這樣賦值會(huì)不會(huì)有點(diǎn)太麻煩?今天我們講到封裝就會(huì)讓它更簡單一些。請(qǐng)看下面代碼:

class Student {
    private String name;//學(xué)生姓名
    private int age;//學(xué)生年齡
    private String sex;//學(xué)生性別
    private double score;//學(xué)生分?jǐn)?shù)
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("厚積薄發(fā)");
        System.out.println(student.getName());
    }
}

根據(jù)封裝的概念我是不是可以給它封裝成一個(gè)公共的接口然后調(diào)用。

好接下來分析一下這個(gè)代碼:

 所以,我們?cè)诔蓡T變量前面加上private修飾使得成員變量只能在類的內(nèi)部訪問,不能在類的外部訪問,然后我們實(shí)現(xiàn)了setName getName方法,調(diào)用者兩個(gè)接口就可以進(jìn)行初始化和返回值操作,更好地體現(xiàn)了封裝性。

getter方法和setter方法

為了更方便的調(diào)用這些接口,IDEA會(huì)為我們提供了這些接口,我們通常情況下把這些方法叫做getter方法和setter方法。只要我們需要我們就可以調(diào)用這些共有的getter方法和setter方法。

IDEA快捷鍵:Alt + insert

class Student {
    private String name;//學(xué)生姓名
    private int age;//學(xué)生年齡
    private String sex;//學(xué)生性別
    private double score;//學(xué)生分?jǐn)?shù)
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    public void sleep() {
        System.out.println("我要睡覺了?。?!");
    }
    public void eat() {
        System.out.println("我要干飯了?。?!");
    }
    public void exam() {
        System.out.println("我要考試了?。?!");
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Student student = new Student();//利用new關(guān)鍵字實(shí)例化一個(gè)對(duì)象
        student.setName("厚積薄發(fā)");
        student.setAge(19);
        student.setScore(99.9);
        student.setSex("male");
        System.out.println(student.getName());
        System.out.println(student.getAge());
        System.out.println(student.getScore());
        System.out.println(student.getSex());
    }
}

toString方法

此外,我們每個(gè)成員變量都要自己實(shí)現(xiàn)一遍打印操作,沒錯(cuò)IDEA編譯器又為我們提供了一個(gè)方法,這個(gè)方法叫做toString方法,快捷鍵是 Alt +insert然后選擇toString方法。

 我們直接打印對(duì)象的引用就可以調(diào)用toString方法.

有同學(xué)就會(huì)問為什么呢?

這就得需要我們看一看println的源碼是怎么實(shí)現(xiàn)的了。

我們按住ctrl 點(diǎn)進(jìn)println這個(gè)方法

 我們通過源碼就可以發(fā)現(xiàn),println會(huì)調(diào)用toString方法,如果定義了toString方法,那他就調(diào)用toString方法,如果沒有調(diào)用他就會(huì)打印:

 eg:

快捷鍵: Alt + insert  選擇constructor

總結(jié):

private關(guān)鍵字:利用private修飾的成員變量和方法只能在本類中訪問,如果在外部訪問可以調(diào)用公有的setter方法和getter方法。

封裝的優(yōu)點(diǎn):減少代碼的耦合性    , 可以自由修改自己的內(nèi)部類,不用修改公有地接口 ,隱藏信息實(shí)現(xiàn)細(xì)節(jié),更精準(zhǔn)的控制成員變量。

要記住并且運(yùn)用并且調(diào)用這些公共的接口:getter方法和setter方法 還有toString方法以及 構(gòu)造方法。

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容! 

相關(guān)文章

  • Hystrix?Turbine聚合監(jiān)控的實(shí)現(xiàn)詳解

    Hystrix?Turbine聚合監(jiān)控的實(shí)現(xiàn)詳解

    微服務(wù)架構(gòu)下,?個(gè)微服務(wù)往往部署多個(gè)實(shí)例,如果每次只能查看單個(gè)實(shí)例的監(jiān)控,就需要經(jīng)常切換很不?便,在這樣的場(chǎng)景下,我們可以使??Hystrix?Turbine?進(jìn)?聚合監(jiān)控,它可以把相關(guān)微服務(wù)的監(jiān)控?cái)?shù)據(jù)聚合在?起,便于查看
    2022-09-09
  • Java實(shí)現(xiàn)圖片旋轉(zhuǎn)、指定圖像大小和水平翻轉(zhuǎn)

    Java實(shí)現(xiàn)圖片旋轉(zhuǎn)、指定圖像大小和水平翻轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖像旋轉(zhuǎn),指定圖像大小,水平翻轉(zhuǎn)圖像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Java servlet 使用 PrintWriter 時(shí)的編碼與亂碼的示例代碼

    Java servlet 使用 PrintWriter 時(shí)的編碼與亂碼的示例代碼

    本篇文章主要介紹了Java servlet 使用 PrintWriter 時(shí)的編碼與亂碼的示例代碼,探討了 PrintWriter 的缺省編碼與普通字符流的缺省編碼的差異,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-11-11
  • springboot斷言異常封裝與統(tǒng)一異常處理實(shí)現(xiàn)代碼

    springboot斷言異常封裝與統(tǒng)一異常處理實(shí)現(xiàn)代碼

    異常處理其實(shí)一直都是項(xiàng)目開發(fā)中的大頭,但關(guān)注異常處理的人一直都特別少,下面這篇文章主要給大家介紹了關(guān)于springboot斷言異常封裝與統(tǒng)一異常處理的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Java中CopyOnWriteArrayList的使用解析

    Java中CopyOnWriteArrayList的使用解析

    這篇文章主要介紹了Java中CopyOnWriteArrayList的使用解析,CopyOnWriteArrayList適合使用在讀操作遠(yuǎn)遠(yuǎn)大于寫操作的場(chǎng)景里,比如緩存,它不存在擴(kuò)容的概念,每次寫操作都要復(fù)制一個(gè)副本,在副本的基礎(chǔ)上修改后改變Array引用,需要的朋友可以參考下
    2023-12-12
  • Springmvc獲取前臺(tái)請(qǐng)求數(shù)據(jù)過程解析

    Springmvc獲取前臺(tái)請(qǐng)求數(shù)據(jù)過程解析

    這篇文章主要介紹了Springmvc獲取前臺(tái)請(qǐng)求數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 一文讀懂JAVA中HttpURLConnection的用法

    一文讀懂JAVA中HttpURLConnection的用法

    這篇文章主要介紹了JAVA中的HttpURLConnection用法,文中講解非常細(xì)致,供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • java中計(jì)算字符串長度的方法及u4E00與u9FBB的認(rèn)識(shí)

    java中計(jì)算字符串長度的方法及u4E00與u9FBB的認(rèn)識(shí)

    字符串采用unicode編碼的方式時(shí),計(jì)算字符串長度的方法找出UNICODE編碼中的漢字的代表的范圍“\u4E00” 到“\u9FBB”之間感興趣的朋友可以參考本文,或許對(duì)你有所幫助
    2013-01-01
  • 一文帶你了解Java萬物之基之Object類

    一文帶你了解Java萬物之基之Object類

    Java是一門天然的面向?qū)ο蟮恼Z言。而所有我們手動(dòng)創(chuàng)造出來的類,都繼承于同一個(gè)類,即Object類。本文將通過示例為大家詳細(xì)介紹一下Java中的Object類,需要的可以參考一下
    2022-03-03
  • java 單播、廣播、組播詳解及實(shí)例代碼

    java 單播、廣播、組播詳解及實(shí)例代碼

    這篇文章主要介紹了java 單播、廣播、組播詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評(píng)論