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

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

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

引用

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

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

1.封裝

1.1什么是封裝

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

1.2為什么要封裝

1.降低耦合性
封裝可以降低對(duì)象和對(duì)象之間的耦合度,當(dāng)對(duì)象內(nèi)部發(fā)生變化時(shí),只需要修改對(duì)象內(nèi)部即可,不會(huì)影響到外部程序,因?yàn)楣_的接口是不會(huì)發(fā)生改變的。

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

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

1.3如何封裝

封裝采用訪問限定符:

使用范圍如下:

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

2.static關(guān)鍵字

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

2.1static修飾成員變量

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

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

代碼如下:

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";//不依賴于對(duì)象的引用,通過類名直接訪問
        System.out.println(test1);
        System.out.println(test2);
    }
}

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

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

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

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

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

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

public class Test {

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

運(yùn)行結(jié)果:

2.3static修飾成員方法

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

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

  • 是類方法,不單獨(dú)屬于某一對(duì)象
  • 通過類名所調(diào)用
  • 在靜態(tài)成員方法中不能訪問任何非靜態(tài)成員變量
  • 在靜態(tài)方法中不能調(diào)用任何非靜態(tài)方法,因?yàn)榉庆o態(tài)方法中有this參數(shù)(通過this引用非靜態(tài)成員變量),在靜態(tài)方法中調(diào)用時(shí)無法傳遞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";//依賴于對(duì)象的引用
        name = "xixi";
        Test.name = "xixi";//不依賴于對(duì)象的引用,通過類名直接訪問

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

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

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

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

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

3.代碼塊

分為靜態(tài)代碼塊,實(shí)例代碼塊,構(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實(shí)例代碼塊

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

public class Test {

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

    //實(shí)例化代碼塊
    {
        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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

    Java中的反射機(jī)制詳解

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

    Java 判斷IP地址的合法性實(shí)例詳解

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

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

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

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

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

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

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

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

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

    MyBatis在SQL語(yǔ)句中如何獲取list的大小

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

最新評(píng)論

柳江县| 南澳县| 望城县| 元阳县| 东丰县| 漳州市| 定兴县| 临桂县| 临武县| 清镇市| 新和县| 陇西县| 丰宁| 渑池县| 连城县| 仙桃市| 白山市| 休宁县| 如皋市| 两当县| 武平县| 新蔡县| 桐庐县| 石嘴山市| 日土县| 邵阳县| 长泰县| 中山市| 满城县| 甘南县| 普兰县| 客服| 桓仁| 满城县| 高尔夫| 开鲁县| 永吉县| 盱眙县| 宁安市| 道真| 广西|