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

Java面向?qū)ο筇匦栽斀庵庋b篇

 更新時間:2025年12月10日 09:47:24   作者:西峰u  
Java是一種廣泛使用的面向?qū)ο缶幊陶Z言,它支持封裝、繼承和多態(tài)等核心概念,這些都是面向?qū)ο缶幊谭妒降闹匾M成部分,這篇文章主要介紹了Java面向?qū)ο筇匦栽斀庵庋b篇的相關(guān)資料,需要的朋友可以參考下

引用

我們學(xué)習面向?qū)ο蟮恼Z言時,應(yīng)該都了解它有三大特性。

面向?qū)ο蟮娜筇匦裕悍庋b、繼承和多態(tài)。這篇博客主要介紹的就是封裝。

1.封裝

1.1什么是封裝

封裝就像是把東西放在?個盒子里,并且控制誰可以打開這個盒子,以及如何使用盒子里的東西。在編程中,它指的是將數(shù)據(jù)(屬性)和操作這些數(shù)據(jù)的方法(函數(shù))包裝在?個單元(通常是類)內(nèi)。僅對外公開一些接口來和對象進行交互。

1.2為什么要封裝

1.降低耦合性
封裝可以降低對象和對象之間的耦合度,當對象內(nèi)部發(fā)生變化時,只需要修改對象內(nèi)部即可,不會影響到外部程序,因為公開的接口是不會發(fā)生改變的。

2.降低復(fù)雜性
封裝隱藏對象內(nèi)部的細節(jié),只對外公開接口給外部,使用起來更便捷。

3.提高安全性
同理封裝隱藏了對象內(nèi)部細節(jié),阻止外部程序直接訪問對象的內(nèi)部狀態(tài),從而保護數(shù)據(jù)不被意外修改或破壞。

1.3如何封裝

封裝采用訪問限定符:

使用范圍如下:

  • private修飾的成員變量只能在同一類中使用
  • default表示什么修飾符都不加,只能在同一包中訪問
  • protected修飾的方法可以在同一包中訪問,如果想要在不同包中訪問,只能是繼承關(guān)系下的子類才能訪問。
  • public表示所有范圍都能使用

2.static關(guān)鍵字

static關(guān)鍵字可以修飾成員變量和成員方法。

2.1static修飾成員變量

被static修飾的成員變量稱為靜態(tài)成員變量,該變量不在獨屬于某一對象,而是屬于類,是類變量,所有對象共享該類變量。存在于方法區(qū)中。

首先,我們定義兩個變量,一個成員變量author,一個被static修飾的靜態(tài)成員變量name。然后我們在main方法中創(chuàng)建兩個對象,分別用變量test1和test2引用兩對象。最后打印兩個對象。

代碼如下:

public class Test {

    private String author;
    private static String name;

    public Test(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        return "Test{" +
                "author='" + author + '\'' +
                "name='" + name + '\''+
                '}';
    }

    public static void main(String[] args) {
        Test test1 = new Test("lishi");
        Test test2 = new Test("wangwu");
        Test.name = "zhangsan";//不依賴于對象的引用,通過類名直接訪問
        System.out.println(test1);
        System.out.println(test2);
    }
}

運行結(jié)果:證明了所有對象共享類變量

思維導(dǎo)圖:不同對象是如何調(diào)用靜態(tài)變量

類型的變量創(chuàng)建在棧上,對象創(chuàng)建在堆上,而靜態(tài)變量存放在方法區(qū)

2.2靜態(tài)成員變量的特性

  • 不屬于具體的某一個對象,所有對象共享
  • 不依賴于對象,通過類名進行訪問
  • 存儲在方法區(qū)中
  • 生命周期伴隨類的加載而創(chuàng)建,類的卸載而銷毀

我們演示下最后一個特性:首先我們給靜態(tài)成員變量name就地初始化“七七”,沒有創(chuàng)建任何對象,直接通過類名進行訪問,然打印出來。
代碼如下:

public class Test {

    private String author;
    private static String name = "qiqi";
    
    public static void main(String[] args) {
        System.out.println(Test.name);
    }
}

運行結(jié)果:

2.3static修飾成員方法

同理被static修飾的成員方法稱為靜態(tài)成員方法,是類方法,它不再具體屬于某一個對象。

2.4靜態(tài)成員方法的特性

  • 是類方法,不單獨屬于某一對象
  • 通過類名所調(diào)用
  • 在靜態(tài)成員方法中不能訪問任何非靜態(tài)成員變量
  • 在靜態(tài)方法中不能調(diào)用任何非靜態(tài)方法,因為非靜態(tài)方法中有this參數(shù)(通過this引用非靜態(tài)成員變量),在靜態(tài)方法中調(diào)用時無法傳遞this引用(靜態(tài)方法不能訪問任何非靜態(tài)成員變量)
  • 同理在靜態(tài)方法中不能使用super引用
public class Test {

    private String author;
    private static String name = "qiqi";

    public Test(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        return "Test{" +
                "author='" + author + '\'' +
                "name='" + name + '\''+
                '}';
    }

    public void testStatic1(){

    }

    public static void testStatic2(){

    }

    public static void func(){
        //author = "zhangsan" //編譯失?。篍rror:(31, 48) java: ?法從靜態(tài)上下?中引??靜態(tài) 變量 author
        //this.author = "zhangsan";//依賴于對象的引用
        name = "xixi";
        Test.name = "xixi";//不依賴于對象的引用,通過類名直接訪問

        //testStatic1(); //編譯報錯:Error:(36, 41) java: ?法從靜態(tài)上下?中引??靜態(tài) ?法 doClass()
        testStatic2();
    }
}

2.5static修飾的成員變量初始化

有兩種初始化方法,一種是就地初始化,一種是在靜態(tài)代碼塊初始化。就地初始化就是定義時直接給出初始值

public class Test {
    private static String name = "qiqi";
}

那什么是靜態(tài)代碼塊呢?

3.代碼塊

分為靜態(tài)代碼塊,實例代碼塊,構(gòu)造代碼塊和普通代碼塊。

3.1靜態(tài)代碼塊

被static修飾的代碼塊就是靜態(tài)代碼塊,?般?于初始化靜態(tài)成員變量。

public class Test {

    private static String name;
    //靜態(tài)代碼塊
    static {
        name = "xixi";
    }
}

3.2實例代碼塊

不加修飾符的代碼塊就是實例代碼塊,?般?于初始化實例成員
變量。

public class Test {

    //實例化成員變量
    private String author;
    private int age;
    private double price;
    //靜態(tài)成員變量
    private static String name;
    private static String classname;
    private static int id;

    //實例化代碼塊
    {
        author = "gugu";
        age = 18;
        price = 23.6;
    }
}

3.3構(gòu)造代碼塊

在構(gòu)造方法內(nèi)的代碼塊稱為構(gòu)造代碼塊

public class Test {

    private String author;
    //構(gòu)造代碼塊
    public Test(String author) {
        this.author = author;
    }
}

3.4普通代碼塊

定義在方法中的代碼塊

public class Main{
	public static void main(String[] args) {
	{ //直接使?{}定義,普通?法塊
		int x = 10 ;
		System.out.println("x1 = " +x);
	}
}

總結(jié) 

到此這篇關(guān)于Java面向?qū)ο筇匦栽斀庵庋b篇的文章就介紹到這了,更多相關(guān)Java面向?qū)ο蠓庋b內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 對比Java講解Kotlin中?.與!!.的區(qū)別

    對比Java講解Kotlin中?.與!!.的區(qū)別

    這篇文章主要給大家介紹了關(guān)于對比Java,實例講解Kotlin中?.與!!.的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或者使用kotlin具有一定參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2018-06-06
  • Java編程求二叉樹的鏡像兩種方法介紹

    Java編程求二叉樹的鏡像兩種方法介紹

    這篇文章主要介紹了Java編程求二叉樹的鏡像兩種方法介紹,分享了兩種方法,遞歸與非遞歸,每種方法又分別介紹了兩種解決思路,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • IDEA離線安裝maven helper插件的圖文教程

    IDEA離線安裝maven helper插件的圖文教程

    本文通過圖文并茂的形式給大家介紹IDEA離線安裝maven helper插件,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • Java中的反射機制詳解

    Java中的反射機制詳解

    這篇文章主要介紹了JAVA 反射機制的相關(guān)知識,文中講解的非常細致,代碼幫助大家更好的理解學(xué)習,感興趣的朋友可以了解下
    2021-09-09
  • Java 判斷IP地址的合法性實例詳解

    Java 判斷IP地址的合法性實例詳解

    這篇文章主要介紹了Java 判斷IP地址的合法性實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 分享我的第一次java Selenium自動化測試框架開發(fā)過程

    分享我的第一次java Selenium自動化測試框架開發(fā)過程

    這篇文章主要介紹了分享我的第一次java Selenium自動化測試框架開發(fā)過程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-03-03
  • 分享40個Java多線程問題小結(jié)

    分享40個Java多線程問題小結(jié)

    多個線程共存于同一JVM進程里面,所以共用相同的內(nèi)存空間,較之多進程,多線程之間的通信更輕量級,本文給大家分享40個Java多線程問題小結(jié) 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • SpringCloud2020 bootstrap 配置文件失效的解決方法

    SpringCloud2020 bootstrap 配置文件失效的解決方法

    這篇文章主要介紹了SpringCloud2020 bootstrap 配置文件失效的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-02-02
  • Java自動化實現(xiàn)查找并替換PDF中的文本

    Java自動化實現(xiàn)查找并替換PDF中的文本

    這篇文章主要為大家詳細介紹了如何使用強大的 Java PDF 處理庫 Spire.PDF for Java,輕松實現(xiàn) PDF 文檔中的文本查找與替換功能,需要的小伙伴可以了解下
    2025-08-08
  • MyBatis在SQL語句中如何獲取list的大小

    MyBatis在SQL語句中如何獲取list的大小

    這篇文章主要介紹了MyBatis在SQL語句中如何獲取list的大小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論

华阴市| 石棉县| 新密市| 乐平市| 左权县| 荥阳市| 承德县| 临安市| 金昌市| 金昌市| 沂源县| 勐海县| 建瓯市| 哈密市| 盐津县| 佳木斯市| 略阳县| 澄迈县| 焦作市| 电白县| 太白县| 城口县| 常德市| 澎湖县| 望江县| 黄陵县| 永仁县| 辰溪县| 三门峡市| 南丹县| 永川市| 平乐县| 富阳市| 伊宁县| 麻江县| 海晏县| 辽宁省| 建水县| 屯门区| 兴安县| 高阳县|