亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java超詳細(xì)講解三大特性之一的封裝

 更新時(shí)間:2022年05月12日 16:26:05   作者:crisp制藥  
封裝是一個(gè)非常廣泛的概念,小到一個(gè)屬性的封裝,大到一個(gè)框架或者一個(gè)項(xiàng)目的封裝,下面這篇文章主要給大家介紹了關(guān)于java中封裝的那點(diǎn)事,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

說(shuō)到面向?qū)ο髣t不得不提面向?qū)ο蟮娜筇卣鳎悍庋b,繼承,多態(tài)。那么今天就和大家先來(lái)介紹什么是封裝。

封裝

封裝的概念

將類的某些信息隱藏在類的內(nèi)部,不允許外部程序直接訪問(wèn),而是通過(guò)該類提供的方法來(lái)對(duì)隱藏的信息進(jìn)行操作和訪問(wèn)。

為什么需要封裝?

當(dāng)我們創(chuàng)建一個(gè)類的對(duì)象后,我們可以通過(guò)“對(duì)象.屬性”的方式,對(duì)對(duì)象的屬性進(jìn)行賦值。這里賦值操作要受到 屬性的數(shù)據(jù)類型和存儲(chǔ)范圍的制約。除此之外,沒(méi)有其他制約條件,但是,在實(shí)際問(wèn)題中,我們往往需要給屬性賦值加入額外的限制條件。這個(gè)條件就不能在屬性聲明時(shí)體現(xiàn),我們只能通過(guò)方法進(jìn)行限制性條件的添加。同時(shí)我們需要避免用戶再使用“對(duì)象.屬性”的方式對(duì)屬性進(jìn)行賦值,則需要將屬性聲明為私有的(private)。

封裝的優(yōu)點(diǎn):

1. 良好的封裝能夠減少耦合。

2. 類內(nèi)部的結(jié)構(gòu)可以自由修改。

3. 可以對(duì)成員變量進(jìn)行更精確的控制。

4. 隱藏信息,實(shí)現(xiàn)細(xì)節(jié)。

封裝的實(shí)現(xiàn)步驟

(1)將屬性修改為private

(2)創(chuàng)建getter/setter方法,通過(guò)這兩種方法對(duì)數(shù)據(jù)進(jìn)行獲取和設(shè)定,對(duì)象通過(guò)調(diào)用這兩種發(fā)方法實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀寫(xiě)。

class person{
  private int age;//修改屬性為private
public int getAge(){
  return age;
}
public void setAge(int a){
   age = a;
   }
 }

封裝 隱藏對(duì)象內(nèi)部的復(fù)雜性,只對(duì)外公開(kāi)簡(jiǎn)單的接口便于外部調(diào)用,封裝性的體現(xiàn),需要權(quán)限修飾符來(lái)配合。

Java中的包

Java中的包是為了更好的實(shí)現(xiàn)項(xiàng)目中類的管理,解決同名文件的沖突,提到j(luò)ava中的包那么我們就不得不提到package關(guān)鍵字,我們一般使用package聲明類或接口所屬的包,聲明在源文件的首行,比如 package java.lang,每 . 一次就代表一層文件目錄,同一個(gè)包下不能命名同名的接口,類,不同的包可以,對(duì)于包的使用則需要使用import關(guān)鍵字,在源文件中顯示的使用import結(jié)構(gòu)導(dǎo)入指定包下的類,接口,通常import聲明在包的聲明和類的聲明之間,java中,包的名字規(guī)范是全小寫(xiě)的字母拼寫(xiě)

java中類的成員-構(gòu)造器

任何一個(gè)類都有構(gòu)造器,用來(lái)創(chuàng)建對(duì)象和初始化對(duì)象的屬性,創(chuàng)建類的對(duì)象的方法:new+構(gòu)造器,如 Person p = new Person();如果沒(méi)有顯式的定義類的構(gòu)造器的話,則系統(tǒng)默認(rèn)提供一個(gè)空參的構(gòu)造器

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

權(quán)限修飾符 類名 (形參列表){}

總結(jié):屬性賦值的先后順序:

1默認(rèn)初始化

2顯式初始化

3構(gòu)造器中初始化

4通過(guò)“對(duì)象.方法”或“對(duì)象.屬性”的方法,賦值

java中的this關(guān)鍵字

this關(guān)鍵字可以用來(lái)修飾:屬性,方法構(gòu)造器,this理解為:當(dāng)前對(duì)象 或當(dāng)前正在創(chuàng)建的對(duì)象

在類的方法中,我們可以使用“this.屬性”或“this.方法”的方式,調(diào)用 當(dāng)前對(duì)象屬性或方法。但是通常情況下,我們都選擇省略“this.”。特殊情況下,如果方法的形參和類的屬性同名時(shí),我們必須顯示的使用“this.變量”的方式,表面此變量為屬性。

在類的構(gòu)造器也是一樣,調(diào)用一個(gè)空參的構(gòu)造器:this();調(diào)用有參數(shù)的 比如 public Person (int age) 就可以用 this(age)來(lái)進(jìn)行調(diào)用,但是構(gòu)造器中不能自己調(diào)用自己只能調(diào)用其他的構(gòu)造器,如果有n個(gè)構(gòu)造器,那么只有n-1個(gè)構(gòu)造器可以使用this這樣的方式來(lái)調(diào)用,且構(gòu)造器this調(diào)用必須聲明在構(gòu)造器的首行,this也可以用來(lái)進(jìn)行對(duì)象之間的比較大小。

public class Boy {
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int a) {
        age = a;
    }
    public void compare(Boy boy) {
        if (this.age > boy.age) {
            System.out.println("YES");
        } else if (this.age < boy.age) {
            System.out.println("No");
        }
    }
}

總結(jié)

今天介紹了封裝的概念,構(gòu)造器,以及package,import 和 this關(guān)鍵字,希望大家喜歡。

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

相關(guān)文章

  • 解決maven啟動(dòng)Spring項(xiàng)目報(bào)錯(cuò)的問(wèn)題

    解決maven啟動(dòng)Spring項(xiàng)目報(bào)錯(cuò)的問(wèn)題

    下面小編就為大家分享一篇解決maven啟動(dòng)Spring項(xiàng)目報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Spring Boot 通過(guò)AOP和自定義注解實(shí)現(xiàn)權(quán)限控制的方法

    Spring Boot 通過(guò)AOP和自定義注解實(shí)現(xiàn)權(quán)限控制的方法

    這篇文章主要介紹了Spring Boot 通過(guò)AOP和自定義注解實(shí)現(xiàn)權(quán)限控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • java多線程教程之如何使用線程池詳解

    java多線程教程之如何使用線程池詳解

    這篇文章主要給大家介紹了關(guān)于java多線程之如何使用線程池的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Java中生成隨機(jī)數(shù)的4種方式與區(qū)別詳解

    Java中生成隨機(jī)數(shù)的4種方式與區(qū)別詳解

    生成隨機(jī)數(shù)是我們?nèi)粘i_(kāi)發(fā)經(jīng)常會(huì)遇到的一個(gè)功能,這篇文章主要給大家介紹了關(guān)于Java中生成隨機(jī)數(shù)的4種方式與區(qū)別、應(yīng)用場(chǎng)景的相關(guān)資料,4個(gè)方式分別是Random、ThreadLocalRandom、SecureRandom以及Math,需要的朋友可以參考下
    2021-06-06
  • springcloud引入spring-cloud-starter-openfeign失敗的解決

    springcloud引入spring-cloud-starter-openfeign失敗的解決

    這篇文章主要介紹了springcloud?引入spring-cloud-starter-openfeign失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java實(shí)現(xiàn)Kruskal算法的示例代碼

    Java實(shí)現(xiàn)Kruskal算法的示例代碼

    Kruskal算法是一種用來(lái)尋找最小生成樹(shù)的算法,由Joseph Kruskal在1956年發(fā)表。用來(lái)解決同樣問(wèn)題的還有Prim算法和Boruvka算法等。本文將介紹用Java語(yǔ)言實(shí)現(xiàn)Kruskal算法的示例代碼,需要的可以參考一下
    2022-07-07
  • 使用feign配置網(wǎng)絡(luò)ip代理

    使用feign配置網(wǎng)絡(luò)ip代理

    這篇文章主要介紹了使用feign配置網(wǎng)絡(luò)ip代理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java線程協(xié)作的兩種方式小結(jié)

    Java線程協(xié)作的兩種方式小結(jié)

    Java中線程協(xié)作的最常見(jiàn)的兩種方式是利用Object.wait()、Object.notify()和使用Condition,本文主要介紹了Java線程協(xié)作的兩種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎(jiǎng)

    JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎(jiǎng)

    這篇文章主要為大家詳細(xì)介紹了JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Java單例模式的創(chuàng)建,破壞和防破壞詳解

    Java單例模式的創(chuàng)建,破壞和防破壞詳解

    大家所熟知的單例模式只能創(chuàng)建唯一一個(gè)實(shí)例,今天我們介紹幾種常見(jiàn)的單例模式,同時(shí)說(shuō)一說(shuō)如何破壞單例模式,同時(shí)又怎么來(lái)防破壞
    2021-09-09

最新評(píng)論