国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解

這篇具有很好參考價(jià)值的文章主要介紹了【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

個(gè)人主頁(yè):兜里有顆棉花糖
歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng)
收錄于專欄【JavaSE_primary】
本專欄旨在分享學(xué)習(xí)Java的一點(diǎn)學(xué)習(xí)心得,歡迎大家在評(píng)論區(qū)討論??
【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

一、封裝

1.1什么是封裝

封裝概念將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一個(gè)類中,對(duì)外部的訪問只通過類提供的接口進(jìn)行。

封裝目的隱藏類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),只公開必要的方法來操作數(shù)據(jù),避免數(shù)據(jù)被外部直接訪問和修改,從而提高代碼的安全性和可維護(hù)性。

那java是如何控制對(duì)數(shù)據(jù)的訪問權(quán)限呢,答案是訪問修飾符。通過訪問修飾符,可以控制對(duì)數(shù)據(jù)的訪問權(quán)限,以確保代碼的安全性和封裝性。

1.2訪問修飾符

java中主要有以下四種訪問修飾符:
加粗樣式【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

  • public:公共訪問修飾符,可以被任何其他類或代碼訪問。
  • protected:受保護(hù)的訪問修飾符,可以被同一包內(nèi)的類、子類以及其他包中的子類訪問。
  • default(默認(rèn)):沒有顯式指定訪問修飾符時(shí),默認(rèn)的訪問修飾符,可以被同一包中的類訪問。
  • private:私有訪問修飾符,只能被所屬類的內(nèi)部訪問。

二、封裝拓展之包

2.1包的概念

在面向?qū)ο篌w系中,提出了一個(gè)軟件包的概念,即:為了更好的管理類,把多個(gè)類收集在一起成為一組,稱為軟件包。

2.2導(dǎo)入包中的類

在Java中,你可以使用import關(guān)鍵字來導(dǎo)入其他包中的類。導(dǎo)入包中的類可以讓你在當(dāng)前文件中直接使用這些類而無(wú)需使用完整的包名來引用它們。

比如,我們想要導(dǎo)入java.util包中的Date類。即import java.util.Date。

public class Test3 {
    public static void main(String[] args) {
        java.util.Date date = new java.util.Date();
        // 得到一個(gè)毫秒級(jí)別的時(shí)間戳
        System.out.println(date.getTime());
    }
}

這里如果需要使用 java.util 中的其他類,,可以使用 import java.util.*

需要注意的是:import java.util.*中的*代表導(dǎo)入‘java.util’包下的所有類,從而使所有類都可以在代碼中直接使用。同時(shí)這里并不是一次性把java.util包下的所有類都導(dǎo)入進(jìn)來,而是用到哪個(gè)類才導(dǎo)入哪個(gè)類(即用到誰(shuí)導(dǎo)入誰(shuí))。

并不是只有 java.util包才有Date類,java.sql包中也是有Date類的。


2.3自定義包

在Java中,我們可以創(chuàng)建自己的包來組織和管理你的類文件。

創(chuàng)建和使用自定義包的一般步驟如下:

1.創(chuàng)建包目錄結(jié)構(gòu):在我們的項(xiàng)目或源代碼目錄下,創(chuàng)建一個(gè)與我們的包名相對(duì)應(yīng)的目錄結(jié)構(gòu)。例如,如果我們的包名是com.example.mypackage,那么你應(yīng)該創(chuàng)建一個(gè)目錄結(jié)構(gòu)為com/example/mypackage的文件夾。

2.編寫類文件:在包目錄結(jié)構(gòu)下,創(chuàng)建你的類文件。例如,在com/example/mypackage目錄下,你可以創(chuàng)建一個(gè)名為MyClass.java的文件,并在其中定義你的類。

3.聲明包名:在你的類文件的開頭,使用package關(guān)鍵字來聲明你的包名。例如,在MyClass.java中,你可以添加如下的包聲明:package com.example.mypackage;

4.導(dǎo)入和使用包中的類:如果你在另一個(gè)Java文件中想要使用你的包中的類,可以使用import語(yǔ)句導(dǎo)入該類。例如,如果你想在Main.java中使用MyClass類:

import com.example.mypackage.MyClass;

public class Main {
    public static void main(String[] args) {
        MyClass myObject = new MyClass();
        // 使用myObject進(jìn)行操作
    }
}

三、static成員

在Java中,被static修飾的成員,稱之為靜態(tài)成員,也可以稱為類成員,其不屬于某個(gè)具體的對(duì)
象,是所有對(duì)象所共享的。

舉個(gè)例子,我們以學(xué)生類進(jìn)行舉例,現(xiàn)在有10個(gè)學(xué)生,這10個(gè)學(xué)生中都是在同一個(gè)班級(jí),所以我們此時(shí)就不需要再學(xué)生類中寫一個(gè)成員變量來保存學(xué)生所處的班級(jí),我們可以把班級(jí)理解為這些學(xué)生的共同屬性,即所有學(xué)生所共享的一個(gè)屬性。所以我們當(dāng)然不需要在每個(gè)學(xué)生類對(duì)象中都要存儲(chǔ)一份這樣的屬性,因?yàn)檫@個(gè)班級(jí)屬性是每個(gè)學(xué)生所共享的。

3.1static修飾成員變量

static修飾的成員變量,稱為靜態(tài)成員變量,靜態(tài)成員變量最大的特性:不屬于某個(gè)具體的對(duì)象,是所有對(duì)象所共享的。

靜態(tài)成員變量的特性如下:

  • 靜態(tài)成員變量不屬于某個(gè)具體的對(duì)象,是類的屬性,所有對(duì)象共享的,不存儲(chǔ)在某個(gè)對(duì)象的空間中。
  • 既可以通過對(duì)象訪問,也可以通過類名訪問,但一般更推薦使用類名訪問
  • 類變量存儲(chǔ)在方法區(qū)當(dāng)中
  • 靜態(tài)成員變量的生命周期隨類的加載而創(chuàng)建,隨類的卸載而銷毀

如果要為成員變量進(jìn)行賦值的話,我們?nèi)缦聢D可以直接為靜態(tài)成員變量進(jìn)行賦值即可。
【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

3.2靜態(tài)成員方法的訪問

靜態(tài)成員方法的訪問是通過類名來進(jìn)行訪問的。
【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

下面是靜態(tài)成員方法的特性:

  • 靜態(tài)成員方法不屬于某個(gè)具體的對(duì)象,是類方法
  • 靜態(tài)成員方法通過類名去進(jìn)行訪問,當(dāng)然如果通過對(duì)象去訪問也是可以的,只不過更推薦通過類名去進(jìn)行訪問
  • 不能直接訪問靜態(tài)方法中的任何非靜態(tài)成員變量和非靜態(tài)成員方法

綜上,靜態(tài)的無(wú)論是靜態(tài)成員變量還是靜態(tài)成員函數(shù)都是不依賴于對(duì)象的,它們都是可以通過類名去進(jìn)行訪問的。

3.3static成員變量的初始化

靜態(tài)成員變量一般不會(huì)放在構(gòu)造方法中來初始化,構(gòu)造方法中初始化的是與對(duì)象相關(guān)的實(shí)例屬性
靜態(tài)成員變量的初始化分為兩種:就地初始化和靜態(tài)代碼塊初始化。

就地初始化:在定義時(shí)直接給出初始值。
請(qǐng)看舉例:
【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

代碼塊初始化:

四、代碼塊

使用 {} 定義的一段代碼稱為代碼塊。根據(jù)代碼塊定義的位置以及關(guān)鍵字,又可分為以下四種:
實(shí)例代碼塊、靜態(tài)代碼塊、局部代碼塊、同步代碼塊

下面來看下述代碼:

public class MyStudent {
    public String name;
    public int age;
    public int ID;
    public static String classes = "classone";

    {
        System.out.println("實(shí)例代碼塊");
    }

    static {
        System.out.println("靜態(tài)代碼塊");
    }

    public MyStudent(){
        this("李華",18,123456);
        System.out.println("不帶參數(shù)的構(gòu)造函數(shù)");
    }

    public MyStudent(String name,int age,int ID){
        System.out.println("帶參數(shù)的構(gòu)造函數(shù)");
        this.name = "Daming";
        this.age = 21;
        this.ID = 123456;
    }

    public static void main(String[] args) {
        MyStudent s1 = new MyStudent();
    }
}

【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

看下圖代碼的執(zhí)行結(jié)果:
【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=
由此可以看出static修飾的成員變量在對(duì)象創(chuàng)建之前就已經(jīng)創(chuàng)建完成了,所以static修飾的成員變量和成員方法加載的速度比較快。

實(shí)例代碼塊、靜態(tài)代碼塊、局部代碼塊、同步代碼塊的執(zhí)行順序如下:

1.靜態(tài)代碼塊:靜態(tài)代碼塊首先在類加載時(shí)執(zhí)行,只會(huì)執(zhí)行一次,并在類加載后執(zhí)行。用于初始化類的靜態(tài)成員變量或執(zhí)行其他靜態(tài)初始化操作。

2.實(shí)例代碼塊:實(shí)例代碼塊在每次創(chuàng)建對(duì)象時(shí)都會(huì)被執(zhí)行。它在構(gòu)造方法之前執(zhí)行,并且不管調(diào)用哪個(gè)構(gòu)造方法,都會(huì)執(zhí)行實(shí)例初始化塊。

3.構(gòu)造方法(Constructor):構(gòu)造方法用于創(chuàng)建對(duì)象并對(duì)實(shí)例變量進(jìn)行初始化。構(gòu)造方法的執(zhí)行順序由具體調(diào)用的構(gòu)造方法決定。

4.局部代碼塊:局部代碼塊是在方法或條件語(yǔ)句內(nèi)部定義的代碼塊。它在程序運(yùn)行到該代碼塊時(shí)被執(zhí)行。

5.同步代碼塊(Synchronized Block):同步代碼塊使用關(guān)鍵字包裹一段代碼,用于實(shí)現(xiàn)線程同步。當(dāng)線程進(jìn)入同步代碼塊時(shí),需要獲取鎖,其它線程需要等待鎖釋放才能執(zhí)行。

注意事項(xiàng)如下:
1.靜態(tài)代碼塊不管生成多少個(gè)對(duì)象,其只會(huì)執(zhí)行一次
2.靜態(tài)成員變量是類的屬性,因此是在JVM加載類時(shí)開辟空間并初始化的
3.如果一個(gè)類中包含多個(gè)靜態(tài)代碼塊,在編譯代碼時(shí),編譯器會(huì)按照定義的先后次序依次執(zhí)行(合并)
4.實(shí)例代碼塊只有在創(chuàng)建對(duì)象時(shí)才會(huì)執(zhí)行

總之靜態(tài)代碼塊只在類加載時(shí)執(zhí)行一次,而實(shí)例代碼塊(在構(gòu)造方法之前執(zhí)行)在每次創(chuàng)建對(duì)象時(shí)都會(huì)執(zhí)行。局部代碼塊和同步代碼塊在程序運(yùn)行到相應(yīng)的位置時(shí)才會(huì)執(zhí)行。構(gòu)造方法在創(chuàng)建對(duì)象時(shí)被調(diào)用,并且可以根據(jù)具體的構(gòu)造方法決定執(zhí)行順序。

以上就是本文的全部?jī)?nèi)容。

好了,友友們,本文到這里就結(jié)束了,再見啦?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-706955.html

到了這里,關(guān)于【Java基礎(chǔ)篇 | 面向?qū)ο蟆俊?封裝詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java入門】-- Java基礎(chǔ)詳解之 [Java面向?qū)ο缶幊?初級(jí))]

    【Java入門】-- Java基礎(chǔ)詳解之 [Java面向?qū)ο缶幊?初級(jí))]

    目錄 1.類與對(duì)象 2.類與對(duì)象的區(qū)別與聯(lián)系 3.對(duì)象在JVM內(nèi)存中的存在形式(重要) 4.屬性/成員變量/字段 5.如何創(chuàng)建對(duì)象 6.類和對(duì)象的內(nèi)存分配機(jī)制 7.面向?qū)ο蟮娜筇卣鳎?8.面向?qū)ο蠛兔嫦蜻^程? 9.匿名對(duì)象 10.方法(method) 11.方法的重載(overload) 12.可變形參 13.遞歸 14.封裝 15.四種訪

    2024年02月12日
    瀏覽(23)
  • 【JavaSE專欄56】Java面向?qū)ο缶幊蹋荷钊肜斫忸?、?duì)象、屬性和方法的核心概念

    【JavaSE專欄56】Java面向?qū)ο缶幊蹋荷钊肜斫忸?、?duì)象、屬性和方法的核心概念

    博主 默語(yǔ)帶您 Go to New World. ? 個(gè)人主頁(yè)—— 默語(yǔ) 的博客???? 《java 面試題大全》 ??惟余輩才疏學(xué)淺,臨摹之作或有不妥之處,還請(qǐng)讀者海涵指正。??? 《MYSQL從入門到精通》數(shù)據(jù)庫(kù)是開發(fā)者必會(huì)基礎(chǔ)之一~ ?? 吾期望此文有資助于爾,即使粗淺難及深廣,亦備添少許微薄

    2024年02月07日
    瀏覽(27)
  • 面向?qū)ο?類/繼承/封裝/多態(tài))詳解

    面向?qū)ο?類/繼承/封裝/多態(tài))詳解

    面向?qū)ο缶幊蹋∣bject-Oriented Programming,OOP)是一種廣泛應(yīng)用于軟件開發(fā)的編程范式。它基于一系列核心概念,包括類、繼承、封裝和多態(tài)。在這篇詳細(xì)的解釋中,我們將探討這些概念,并說明它們?nèi)绾卧赑HP等編程語(yǔ)言中實(shí)現(xiàn)。 類是OOP的基礎(chǔ)。它是一種用于創(chuàng)建對(duì)象的藍(lán)圖或模

    2024年02月08日
    瀏覽(24)
  • Java面向?qū)ο蠓庋b

    目錄 封裝的概念 封裝具體實(shí)現(xiàn)步驟 示例代碼如下 封裝具體語(yǔ)法 Java封裝是一種面向?qū)ο蟮木幊谭椒?,它的主要思想是將類的?nèi)部細(xì)節(jié)(包括數(shù)據(jù)和方法)隱藏起來,對(duì)外只提供公共的訪問接口,從而保證了程序的安全性和穩(wěn)定性。 1、聲明類的成員變量時(shí),使用private

    2024年02月03日
    瀏覽(21)
  • Java面向?qū)ο?- 封裝、繼承和多態(tài)

    目錄 第1關(guān):什么是封裝,如何使用封裝 第2關(guān):什么是繼承,怎樣使用繼承 第3關(guān):super的使用 第4關(guān):方法的重寫與重載 第5關(guān):抽象類 第6關(guān):final的理解與使用 第7關(guān):接口 第8關(guān):什么是多態(tài),怎么使用多態(tài) Java_Educoder

    2024年02月07日
    瀏覽(22)
  • Python面向?qū)ο缶幊蹋ㄒ唬╊惖幕A(chǔ),關(guān)系,繼承,封裝,多態(tài)

    Python面向?qū)ο缶幊蹋ㄒ唬╊惖幕A(chǔ),關(guān)系,繼承,封裝,多態(tài)

    類的一些理論概念及其應(yīng)用場(chǎng)景等基礎(chǔ)內(nèi)容此處不贅述 目錄 python中一切皆對(duì)象 類的定義及基礎(chǔ) 屬性 方法 初始化方法 ?普通方法 類之間的關(guān)系 相互調(diào)用 依賴關(guān)系 關(guān)聯(lián)關(guān)系 組合關(guān)系 三大特征----類的繼承 重寫父類方法 多繼承 混合繼承? 三大特征----封裝 三大特征----多態(tài)

    2024年02月10日
    瀏覽(28)
  • 面向?qū)ο缶幊痰谝皇剑悍庋b (Java篇)

    面向?qū)ο缶幊痰谝皇剑悍庋b (Java篇)

    本篇會(huì)加入個(gè)人的所謂‘魚式瘋言’ ??????魚式瘋言:??????此瘋言非彼瘋言 而是理解過并總結(jié)出來通俗易懂的大白話, 小編會(huì)盡可能的在每個(gè)概念后插入魚式瘋言,幫助大家理解的. ??????可能說的不是那么嚴(yán)謹(jǐn).但小編初心是能讓更多人能接受我們這個(gè)概念

    2024年03月19日
    瀏覽(26)
  • 【深入淺出C#】章節(jié) 4: 面向?qū)ο缶幊袒A(chǔ):封裝、繼承和多態(tài)

    封裝、繼承和多態(tài)是面向?qū)ο缶幊讨械暮诵母拍睿鼈儗?duì)于構(gòu)建靈活、可擴(kuò)展和可維護(hù)的軟件系統(tǒng)至關(guān)重要。 封裝(Encapsulation)通過將數(shù)據(jù)和相關(guān)操作封裝在一個(gè)類中,隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié),并提供公共接口來與外部進(jìn)行交互。封裝有助于保護(hù)數(shù)據(jù)的完整性和安全性,同時(shí)提

    2024年02月10日
    瀏覽(27)
  • Educoder/頭歌JAVA——JAVA面向?qū)ο螅悍庋b、繼承和多態(tài)的綜合練習(xí)

    Educoder/頭歌JAVA——JAVA面向?qū)ο螅悍庋b、繼承和多態(tài)的綜合練習(xí)

    目錄 第1關(guān):封裝、繼承和多態(tài)進(jìn)階(一) 相關(guān)知識(shí) 面向?qū)ο笏枷?封裝 繼承 組合和繼承 構(gòu)造函數(shù) super()和this() 編程要求 第2關(guān):封裝、繼承和多態(tài)進(jìn)階(二) 相關(guān)知識(shí) 重寫和重載 abstract(抽象類)和interface(接口) final static static的作用 多態(tài) 編程要求 第

    2024年02月04日
    瀏覽(64)
  • 【Java不看后悔系列】|面向?qū)ο缶幊蘾[繼承、封裝、多態(tài)全覆蓋]

    【Java不看后悔系列】|面向?qū)ο缶幊蘾[繼承、封裝、多態(tài)全覆蓋]

    ??個(gè)人主頁(yè):? Aileen_0v0 ??系列專欄: Java學(xué)習(xí)系列專欄 ??個(gè)人格言:\\\"沒有羅馬,那就自己創(chuàng)造羅馬~\\\" (inheritance) 1.A?child class inherits everything from its parent class. 2.A?child class cannot inherit the constructors from its parent class . 子類 繼承 的內(nèi)容: 字段(成員變量): 子類會(huì)繼承父類的字段

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包