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

Java三大特性之封裝詳解

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

封裝概述

概述

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

原則

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

封裝的步驟

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

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

private的含義

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

private的使用格式

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

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

public class Student {

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

}

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

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 方法中的形參名字并不符合見名知意的規(guī)定,那么如果修改與成員變量名一致,是否就見名知意 了呢?代碼如下:

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

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

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

this的含義

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

this使用格式

this.成員變量名;

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

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 修飾,可以省略不寫。

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

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

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

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

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

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

public class Student {

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

    // 無參數(shù)的構(gòu)造方法
    public Student() {
        System.out.println("無參構(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ì)給出無參數(shù)構(gòu)造方法。
  • 如果你提供了構(gòu)造方法,系統(tǒng)將不再提供無參數(shù)構(gòu)造方法。
  • 構(gòu)造方法是可以重載的,既可以定義參數(shù),也可以不定義參數(shù)。

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

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

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

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

public class Student {

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

    // 無參數(shù)的構(gòu)造方法
    public Student() {
        System.out.println("無參構(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談java實(shí)現(xiàn)重載的方法

    淺談java實(shí)現(xiàn)重載的方法

    方法重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個(gè)同名函數(shù)同時(shí)存在,具有不同的參數(shù)個(gè)數(shù)/類型。重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。Java的方法重載,就是在類中可以創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。
    2015-09-09
  • MybatisPlus如何調(diào)用count函數(shù)

    MybatisPlus如何調(diào)用count函數(shù)

    這篇文章主要介紹了MybatisPlus如何調(diào)用count函數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • IDEA新手必備之各種快捷鍵詳解

    IDEA新手必備之各種快捷鍵詳解

    這篇文章主要介紹了IDEA新手必備之各種快捷鍵詳解,文中有非常詳細(xì)的快捷鍵介紹,對正在使用IDEA的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • JavaCV實(shí)戰(zhàn)之調(diào)用攝像頭基礎(chǔ)詳解

    JavaCV實(shí)戰(zhàn)之調(diào)用攝像頭基礎(chǔ)詳解

    這篇文章主要介紹了使用JavaCV框架對攝像頭進(jìn)行各種處理的基礎(chǔ)理論詳解,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaCV有一定的幫助,需要的可以了解一下
    2022-01-01
  • 詳解快速排序算法中的區(qū)間劃分法及Java實(shí)現(xiàn)示例

    詳解快速排序算法中的區(qū)間劃分法及Java實(shí)現(xiàn)示例

    這篇文章主要介紹了詳解快速排序算法中的區(qū)間劃分法及Java實(shí)現(xiàn)示例,文中分別介紹了快排時(shí)兩種區(qū)間劃分的思路,需要的朋友可以參考下
    2016-04-04
  • SpringMVC框架整合Junit進(jìn)行單元測試(案例詳解)

    SpringMVC框架整合Junit進(jìn)行單元測試(案例詳解)

    本文詳細(xì)介紹在SpringMVC任何使用Junit框架。首先介紹了如何引入依賴,接著介紹了編寫一個(gè)測試基類,并且對其中涉及的各個(gè)注解做了一個(gè)詳細(xì)說明,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • java實(shí)現(xiàn)往hive 的map類型字段寫數(shù)據(jù)

    java實(shí)現(xiàn)往hive 的map類型字段寫數(shù)據(jù)

    這篇文章主要介紹了java實(shí)現(xiàn)往hive 的map類型字段寫數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java線程池的簡單使用方法實(shí)例教程

    Java線程池的簡單使用方法實(shí)例教程

    線程的使用在java中占有極其重要的地位,在jdk1.4極其之前的jdk版本中,關(guān)于線程池的使用是極其簡陋的,在jdk1.5之后這一情況有了很大的改,這篇文章主要給大家介紹了關(guān)于Java線程池的簡單使用方法,需要的朋友可以參考下
    2021-10-10
  • Spring中的@ConditionalOnProperty作用和用法詳解

    Spring中的@ConditionalOnProperty作用和用法詳解

    這篇文章主要介紹了Spring中的@ConditionalOnProperty作用和用法詳解,在spring boot中有時(shí)候需要控制配置類是否生效,可以使用@ConditionalOnProperty注解來控制@Configuration是否生效,需要的朋友可以參考下
    2023-11-11
  • 淺析Java的Hibernate框架中的繼承關(guān)系設(shè)計(jì)

    淺析Java的Hibernate框架中的繼承關(guān)系設(shè)計(jì)

    這篇文章主要介紹了Java的Hibernate框架中的繼承關(guān)系設(shè)計(jì),Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12

最新評論