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

Java三大特性之封裝詳解

 更新時(shí)間:2022年10月11日 14:06:39   作者:共飲一杯無(wú)  
面向?qū)ο缶幊陶Z(yǔ)言是對(duì)客觀世界的模擬,客觀世界里成員變量都是隱藏在對(duì)象內(nèi)部的,外界無(wú)法直接操作和修改。?封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被其他類隨意訪問(wèn)。本文將來(lái)和大家詳細(xì)說(shuō)說(shuō)Java中的封裝,需要的可以了解一下

封裝概述

概述

面向?qū)ο缶幊陶Z(yǔ)言是對(duì)客觀世界的模擬,客觀世界里成員變量都是隱藏在對(duì)象內(nèi)部的,外界無(wú)法直接操作和修改。 封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被其他類隨意訪問(wèn)。要訪問(wèn)該類的數(shù)據(jù),必須通過(guò)指定的方式。適當(dāng)?shù)姆庋b可以讓代碼更容易理解與維護(hù),也加強(qiáng)了代碼的安全性。

原則

將屬性隱藏起來(lái),若需要訪問(wèn)某個(gè)屬性,提供公共方法對(duì)其訪問(wèn)。

封裝的步驟

  • 使用 private 關(guān)鍵字來(lái)修飾成員變量。
  • 對(duì)需要訪問(wèn)的成員變量,提供對(duì)應(yīng)的一對(duì) getXxx 方法 、setXxx 方法。

封裝的操作—private關(guān)鍵字

private的含義

  • private是一個(gè)權(quán)限修飾符,代表最小權(quán)限。
  • 可以修飾成員變量和成員方法。
  • 被private修飾后的成員變量和成員方法,只在本類中才能訪問(wèn)。

private的使用格式

private 數(shù)據(jù)類型 變量名 ;

1.使用 private 修飾成員變量,代碼如下:

public class Student {

    // 成員變量
    private String name;
    private int age;

}

2.提供 getXxx 方法 / setXxx 方法,可以訪問(wèn)成員變量,代碼如下:

public class Student {

    // 成員變量
    private String name;
    private int age;

    // Getter Setter
    public void setName(String n) {
        name = n;
    }
    public String getName() {
        return name;
    }
    public void setAge(int a) {
        age = a;
    }
    public int getAge() {
        return age;
    }

}

封裝優(yōu)化1—this關(guān)鍵字

我們發(fā)現(xiàn) setXxx 方法中的形參名字并不符合見(jiàn)名知意的規(guī)定,那么如果修改與成員變量名一致,是否就見(jiàn)名知意 了呢?代碼如下:

    public void setName(String name) {
        name = name;
    }

    public void setAge(int age) {
        age = age;
    }

經(jīng)過(guò)修改和測(cè)試,我們發(fā)現(xiàn)新的問(wèn)題,成員變量賦值失敗了。也就是說(shuō),在修改了setXxx() 的形參變量名后,方 法并沒(méi)有給成員變量賦值!這是由于形參變量名與成員變量名重名,導(dǎo)致成員變量名被隱藏,方法中的變量名,無(wú)法訪問(wèn)到成員變量,從而賦值失敗。所以,我們只能使用this關(guān)鍵字,來(lái)解決這個(gè)重名問(wèn)題。

this的含義

this代表所在類的當(dāng)前對(duì)象的引用(地址值),即對(duì)象自己的引用。 記住 :方法被哪個(gè)對(duì)象調(diào)用,方法中的this就代表那個(gè)對(duì)象。即誰(shuí)在調(diào)用,this就代表誰(shuí)。

this使用格式

this.成員變量名;

使用 this 修飾方法中的變量,解決成員變量被隱藏的問(wèn)題,代碼如下:

public class Student {

    // 成員變量
    private String name;
    private int age;

    // Getter Setter
    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;
    }

}

小貼士:方法中只有一個(gè)變量名時(shí),默認(rèn)也是使用 this 修飾,可以省略不寫(xiě)。

封裝優(yōu)化2—構(gòu)造方法

當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí)候,構(gòu)造方法用來(lái)初始化該對(duì)象,給對(duì)象的成員變量賦初始值。

小貼士:無(wú)論你與否自定義構(gòu)造方法,所有的類都有構(gòu)造方法,因?yàn)镴ava自動(dòng)提供了一個(gè)無(wú)參數(shù)構(gòu)造方法,一旦自己定義了構(gòu)造方法,Java自動(dòng)提供的默認(rèn)無(wú)參數(shù)構(gòu)造方法就會(huì)失效。

構(gòu)造方法的定義格式

修飾符 構(gòu)造方法名(參數(shù)列表){ // 方法體 }

構(gòu)造方法的寫(xiě)法上,方法名與它所在的類名相同。它沒(méi)有返回值,所以不需要返回值類型,甚至不需要void。使用構(gòu)造方法后,代碼如下:

public class Student {

    // 成員變量
    private String name;
    private int age;

    // 無(wú)參數(shù)的構(gòu)造方法
    public Student() {
        System.out.println("無(wú)參構(gòu)造方法執(zhí)行啦!");
    }

    // 全參數(shù)的構(gòu)造方法
    public Student(String name, int age) {
        System.out.println("全參構(gòu)造方法執(zhí)行啦!");
        this.name = name;
        this.age = age;
    }
}

注意事項(xiàng)

  • 如果你不提供構(gòu)造方法,系統(tǒng)會(huì)給出無(wú)參數(shù)構(gòu)造方法。
  • 如果你提供了構(gòu)造方法,系統(tǒng)將不再提供無(wú)參數(shù)構(gòu)造方法。
  • 構(gòu)造方法是可以重載的,既可以定義參數(shù),也可以不定義參數(shù)。

標(biāo)準(zhǔn)代碼—JavaBean

JavaBean 是 Java語(yǔ)言編寫(xiě)類的一種標(biāo)準(zhǔn)規(guī)范。符合JavaBean 的類,要求類必須是具體的和公共的,并且具有無(wú) 參數(shù)的構(gòu)造方法,提供用來(lái)操作成員變量的set 和get 方法。

public class ClassName{
    //成員變量
    //構(gòu)造方法
    //無(wú)參構(gòu)造方法【必須】
    //有參構(gòu)造方法【建議】
    //成員方法
    //getXxx()
    //setXxx()
}

編寫(xiě)符合JavaBean 規(guī)范的類,以學(xué)生類為例,標(biāo)準(zhǔn)代碼如下:

public class Student {

    // 成員變量
    private String name;
    private int age;

    // 無(wú)參數(shù)的構(gòu)造方法
    public Student() {
        System.out.println("無(wú)參構(gòu)造方法執(zhí)行啦!");
    }

    // 全參數(shù)的構(gòu)造方法
    public Student(String name, int age) {
        System.out.println("全參構(gòu)造方法執(zhí)行啦!");
        this.name = name;
        this.age = age;
    }

    // Getter Setter
    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;
    }

}

到此這篇關(guān)于Java三大特性之封裝詳解的文章就介紹到這了,更多相關(guān)Java封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Java中Split函數(shù)的用法技巧

    淺析Java中Split函數(shù)的用法技巧

    在java.lang包中也有String.split()方法,與.net的類似,都是返回是一個(gè)字符型數(shù)組,但使用過(guò)程中還有一些小技巧。以下我就為大家介紹,需要的朋友可以參考下
    2013-07-07
  • Spring boot 應(yīng)用實(shí)現(xiàn)動(dòng)態(tài)刷新配置詳解

    Spring boot 應(yīng)用實(shí)現(xiàn)動(dòng)態(tài)刷新配置詳解

    這篇文章主要介紹了spring boot 配置動(dòng)態(tài)刷新實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 在Jpa框架下拼接原生sql 并執(zhí)行的操作

    在Jpa框架下拼接原生sql 并執(zhí)行的操作

    這篇文章主要介紹了在Jpa框架下拼接原生sql 并執(zhí)行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 【MyBatis源碼全面解析】MyBatis一二級(jí)緩存介紹

    【MyBatis源碼全面解析】MyBatis一二級(jí)緩存介紹

    下面小編就為大家?guī)?lái)一篇【MyBatis源碼全面解析】MyBatis一二級(jí)緩存介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • SpringBoot項(xiàng)目為何引入大量的starter?如何自定義starter?

    SpringBoot項(xiàng)目為何引入大量的starter?如何自定義starter?

    這篇文章主要介紹了SpringBoot項(xiàng)目為何引入大量的starter?如何自定義starter?文章基于這兩個(gè)問(wèn)題展開(kāi)全文,需要的小伙伴可以參考一下
    2022-04-04
  • java.util.Collections類—emptyList()方法的使用

    java.util.Collections類—emptyList()方法的使用

    這篇文章主要介紹了java.util.Collections類—emptyList()方法的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 一文帶你揭秘SpringMvc參數(shù)值映射

    一文帶你揭秘SpringMvc參數(shù)值映射

    這篇文章主要給大家介紹了關(guān)于SpringMvc參數(shù)值映射的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • SpringBoot集成Prometheus實(shí)現(xiàn)監(jiān)控的過(guò)程

    SpringBoot集成Prometheus實(shí)現(xiàn)監(jiān)控的過(guò)程

    這篇文章主要介紹了SpringBoot集成Prometheus實(shí)現(xiàn)監(jiān)控,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • java中String的一些方法深入解析

    java中String的一些方法深入解析

    以下是對(duì)java中String的一些方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • Mybatis實(shí)現(xiàn)批量操作8種小結(jié)

    Mybatis實(shí)現(xiàn)批量操作8種小結(jié)

    本文對(duì)Mybatis的五種批處理方式進(jìn)行了性能測(cè)試,包括批量新增和批量修改,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10

最新評(píng)論

东辽县| 石城县| 安义县| 腾冲县| 三河市| 和硕县| 玉龙| 徐水县| 宁夏| 始兴县| 新化县| 巩义市| 绍兴市| 西藏| 双江| 崇信县| 岳阳市| 翼城县| 和田市| 霍邱县| 乌海市| 紫金县| 绥棱县| 南华县| 防城港市| 九龙县| 中山市| 江华| 忻城县| 普洱| 屏南县| 蒙山县| 福海县| 和林格尔县| 怀宁县| 陆河县| 蒙自县| 苏尼特左旗| 中江县| 汽车| 玉田县|