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

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

封裝的好處意義

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

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

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

那private到底有什么用處呢?

我們在來回憶一下上篇文章講過的類和對象,下面我會創(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è)對象
        student.age = 19;
        student.name = "厚積薄發(fā)";
        student.score = 99.9;
        student.sex = "男";
    }
}

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

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

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è)代碼:

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

getter方法和setter方法

為了更方便的調(diào)用這些接口,IDEA會為我們提供了這些接口,我們通常情況下把這些方法叫做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è)對象
        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方法。

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

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

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

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

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

 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)文章

  • HashMap 和 HashSet的區(qū)別

    HashMap 和 HashSet的區(qū)別

    本文主要介紹HashMap 和 HashSet的區(qū)別,這里整理了詳細(xì)的資料來說名兩者的區(qū)別,并說明如何使用該方法,有需要的小伙伴可以參考下
    2016-09-09
  • spring 如何將配置信息注入靜態(tài)變量的方法

    spring 如何將配置信息注入靜態(tài)變量的方法

    本篇文章主要介紹了spring 如何將配置信息注入靜態(tài)變量的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java透明窗體的設(shè)置方法

    Java透明窗體的設(shè)置方法

    在本文中我們給大家整理了關(guān)于Java透明窗體的設(shè)置方法以及需要注意的地方,需要的朋友們學(xué)習(xí)參考下。
    2019-03-03
  • Spring配置文件超詳細(xì)講解

    Spring配置文件超詳細(xì)講解

    這篇文章主要介紹了Spring配置文件超的相關(guān)資料,配置文件是一種存放應(yīng)用程序或系統(tǒng)配置的文件,允許開發(fā)者和用戶在不修改代碼的情況下調(diào)整應(yīng)用程序的行為和性能,
    2025-03-03
  • Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等

    Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等

    這篇文章主要介紹了Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 關(guān)于logback日志級別動(dòng)態(tài)切換的四種方式

    關(guān)于logback日志級別動(dòng)態(tài)切換的四種方式

    這篇文章主要介紹了關(guān)于logback日志級別動(dòng)態(tài)切換的四種方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 用Java打造簡易計(jì)算器的實(shí)現(xiàn)步驟

    用Java打造簡易計(jì)算器的實(shí)現(xiàn)步驟

    這篇文章主要介紹了如何設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡單的Java命令行計(jì)算器程序,該程序能夠執(zhí)行基本的數(shù)學(xué)運(yùn)算(加、減、乘、除),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • 理解zookeeper選舉機(jī)制

    理解zookeeper選舉機(jī)制

    本文主要介紹了zookeeper選舉機(jī)制的相關(guān)知識,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java中的參數(shù)傳遞詳細(xì)介紹

    Java中的參數(shù)傳遞詳細(xì)介紹

    大家好,本篇文章主要講的是Java中的參數(shù)傳遞詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • JavaSwing基礎(chǔ)之Layout布局相關(guān)知識詳解

    JavaSwing基礎(chǔ)之Layout布局相關(guān)知識詳解

    上次我們說到View的Mearsure流程,今天接著說說layout. 關(guān)于layout,很多朋友知道它是負(fù)責(zé)布局的,那么具體是怎么布局的?viewGroup和view的layout方法又有什么不同?一起來看看吧,需要的朋友可以參考下
    2021-05-05

最新評論

洪雅县| 阿瓦提县| 新竹县| 青海省| 淳化县| 清涧县| 镇沅| 武乡县| 河北省| 台东市| 黑龙江省| 湾仔区| 二手房| 比如县| 淮滨县| 江陵县| 宜城市| 清远市| 防城港市| 仁布县| 四川省| 福安市| 德惠市| 洱源县| 建湖县| 博客| 滨州市| 杨浦区| 马尔康县| 开原市| 大冶市| 靖宇县| 楚雄市| 司法| 惠安县| 富顺县| 图木舒克市| 开江县| 漾濞| 那坡县| 木兰县|