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

Java訪問修飾符public、private、protected及默認訪問權(quán)限詳解

 更新時間:2025年01月24日 16:02:28   作者:Y雨何時停T  
這篇文章主要介紹了Java訪問修飾符public、private、protected及默認訪問權(quán)限的相關(guān)資料,每種修飾符都有其特定的使用場景,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

在Java編程中,訪問修飾符(Access Modifiers)是控制類、方法、字段和構(gòu)造函數(shù)訪問范圍的重要機制。Java提供了四種主要的訪問修飾符:public、privateprotected默認(不寫修飾符)。不同的修飾符決定了成員或類在類內(nèi)部同一包內(nèi)、子類以及整個程序中的可見性。

本文將詳細介紹這些訪問修飾符的區(qū)別,并討論它們在實際開發(fā)中的應(yīng)用場景。

1. public 訪問修飾符

public 修飾符是訪問權(quán)限最寬松的修飾符,表示任何類都可以訪問被修飾的類或類成員。無論這個類位于哪個包中,public成員始終對所有其他類可見。

特點:

  • :當一個類被聲明為 public 時,任何其他類都可以訪問這個類。
  • 字段、方法、構(gòu)造器:聲明為 public 的字段、方法或構(gòu)造器可以被任何類訪問,不受包和繼承關(guān)系的限制。

示例:

// 文件:Animal.java
package com.example;

public class Animal {
    public String name;

    public void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

在這個例子中,Animal 類和它的 name 字段以及 makeSound() 方法都被聲明為 public,因此任何其他包中的類都可以訪問它們。

適用場景:

  • 公共API:當類或方法需要暴露給整個應(yīng)用程序或多個模塊時,public 是理想的選擇。
  • 工具類:如Math類的靜態(tài)方法通常是public,因為這些方法是通用工具,需要在多個地方調(diào)用。

2. private 訪問修飾符

private 修飾符是訪問權(quán)限最嚴格的修飾符。使用 private 修飾的成員只能在類內(nèi)部訪問,類的外部(包括其子類)無法訪問。

特點:

  • :類不能被聲明為 private,Java不允許使用 private 修飾符來限制類的訪問權(quán)限。
  • 字段、方法、構(gòu)造器:聲明為 private 的字段、方法或構(gòu)造器僅在聲明它們的類內(nèi)部可見,其他類無權(quán)訪問。

示例:

// 文件:Person.java
package com.example;

public class Person {
    private String ssn;  // 社會安全號碼 (私密數(shù)據(jù))

    private void displaySsn() {
        System.out.println("SSN: " + ssn);
    }

    public void setSsn(String ssn) {
        this.ssn = ssn;
    }
}

在這個例子中,ssn 字段和 displaySsn() 方法都是 private,所以它們只能在 Person 類內(nèi)部被訪問。其他類無法直接讀取或修改 ssn,只能通過 setSsn() 這樣的 public 方法進行控制。

適用場景:

  • 信息隱藏:當類中的某些數(shù)據(jù)或?qū)崿F(xiàn)細節(jié)不希望被外部訪問或修改時,使用 private 是最佳選擇,確保了數(shù)據(jù)封裝。
  • 安全性:敏感數(shù)據(jù)如密碼、個人信息等應(yīng)使用 private 修飾符,以防止被意外或惡意篡改。

3. protected 訪問修飾符

protected 修飾符允許類的成員在同一包內(nèi)繼承關(guān)系中的子類中訪問。與 private 不同的是,protected 使得子類可以訪問父類的受保護成員。

特點:

  • :類不能聲明為 protected。
  • 字段、方法、構(gòu)造器:聲明為 protected 的成員在同一個包內(nèi)的所有類中可見,此外,子類也可以訪問它們。

示例:

// 文件:Animal.java
package com.example;

public class Animal {
    protected String species;

    protected void displaySpecies() {
        System.out.println("Species: " + species);
    }
}

// 文件:Dog.java
package com.example;

public class Dog extends Animal {
    public void showSpecies() {
        this.species = "Canine";  // 訪問 protected 成員
        this.displaySpecies();     // 訪問 protected 方法
    }
}

在這個例子中,Animal 類的 species 字段和 displaySpecies() 方法是 protected 的,Dog 作為其子類可以訪問這些成員。

適用場景:

  • 繼承和擴展:當希望類的某些成員能被子類繼承和使用,但不希望被完全公開時,使用 protected 是合適的選擇。

4. 默認(包訪問權(quán)限)

如果在類或成員聲明時未顯式指定訪問修飾符,則默認為包級訪問權(quán)限。這種訪問權(quán)限僅限于同一包內(nèi)的類,包外的類無法訪問它們。

特點:

  • :如果類沒有顯式聲明為 public,它就具有包級訪問權(quán)限,僅對同一包內(nèi)的類可見。
  • 字段、方法、構(gòu)造器:默認修飾符允許同包中的類訪問這些成員,但包外的類和子類都無法訪問。

示例:

// 文件:Animal.java
package com.example;

class Animal {
    String name;

    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

// 文件:Test.java
package com.example;

public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name = "Lion";       // 同一包內(nèi),訪問包級成員
        animal.makeSound();
    }
}

在這個例子中,Animal 類和它的成員沒有訪問修飾符,因此只能在 com.example 包內(nèi)被訪問。Test 類可以訪問 Animal,但位于其他包中的類將無法訪問 Animal。

適用場景:

  • 包內(nèi)共享:當類或成員只需要在同一個包中共享時,可以使用默認訪問權(quán)限。

5. 總結(jié):訪問修飾符的區(qū)別

修飾符類內(nèi)部同一包子類其他包
public????????
protected???????
默認(無修飾)??????
private?????

結(jié)語

在Java中,訪問修飾符是控制類和成員可見性的核心機制。通過合理使用 publicprivate、protected 和默認訪問權(quán)限,開發(fā)者可以實現(xiàn)更好的數(shù)據(jù)封裝、安全性以及模塊化設(shè)計。在實際開發(fā)中,根據(jù)成員的功能和作用域選擇合適的修飾符,是編寫健壯、安全代碼的重要步驟。

到此這篇關(guān)于Java訪問修飾符public、private、protected及默認訪問權(quán)限的文章就介紹到這了,更多相關(guān)Java訪問修飾符public、private、protected內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java字符串替換的三種方法實際應(yīng)用

    Java字符串替換的三種方法實際應(yīng)用

    這篇文章主要給大家介紹了關(guān)于Java字符串替換的三種方法,replace和replaceAll是JAVA中常用的替換字符的方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • IDEA自動導(dǎo)入包實現(xiàn)方式

    IDEA自動導(dǎo)入包實現(xiàn)方式

    文章介紹了如何在IntelliJ IDEA中自動導(dǎo)入包,包括配置步驟和具體操作,通過設(shè)置“Add unambiguous imports on the fly”和“Optimize imports on the fly”,可以實現(xiàn)自動導(dǎo)入和優(yōu)化導(dǎo)入語句,提高開發(fā)效率
    2026-01-01
  • Apache?Commons?Config管理配置文件核心功能使用

    Apache?Commons?Config管理配置文件核心功能使用

    這篇文章主要為大家介紹了Apache?Commons?Config管理和使用配置文件核心深入探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 帶你入門Java的集合

    帶你入門Java的集合

    Java的集合類型都是對java.util包中Collection接口的繼承,這里我們主要介紹依賴于collection的一些主分支,一起來看一下Java中的collection集合類型總結(jié)
    2021-07-07
  • JVM 體系結(jié)構(gòu)詳解

    JVM 體系結(jié)構(gòu)詳解

    本文主要介紹了JVM體系結(jié)構(gòu)的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Java農(nóng)夫過河問題的繼承與多態(tài)實現(xiàn)詳解

    Java農(nóng)夫過河問題的繼承與多態(tài)實現(xiàn)詳解

    這篇文章主要介紹了Java農(nóng)夫過河問題的繼承與多態(tài)實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Java中使用標簽(label)來控制循環(huán)的執(zhí)行流程

    Java中使用標簽(label)來控制循環(huán)的執(zhí)行流程

    java 和 label 兩個完全不相干的詞,今天我把他們連接在一起了,試想一個問題,雙循環(huán)在不使用 return 的情況下,如何停止外循環(huán)?所以本文給大家介紹了Java中使用標簽(label)來控制循環(huán)的執(zhí)行流程,需要的朋友可以參考下
    2024-06-06
  • Java線程池必知必會知識點總結(jié)

    Java線程池必知必會知識點總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java線程池必知必會知識點的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-02-02
  • mybatis空值插入處理的解決方法

    mybatis空值插入處理的解決方法

    本文主要介紹了mybatis空值插入處理的解決方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot內(nèi)嵌Tomcat臨時目錄問題及解決

    SpringBoot內(nèi)嵌Tomcat臨時目錄問題及解決

    這篇文章主要介紹了SpringBoot內(nèi)嵌Tomcat臨時目錄問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論

凉城县| 朝阳市| 章丘市| 鞍山市| 南投市| 清丰县| 西盟| 新晃| 和硕县| 象山县| 依兰县| 阳曲县| 翁牛特旗| 灵璧县| 肃北| 且末县| 连江县| 安庆市| 砚山县| 微山县| 崇左市| 昌邑市| 乾安县| 中阳县| 伊春市| 泰顺县| 江北区| 铅山县| 疏附县| 长葛市| 璧山县| 大悟县| 阜康市| 翼城县| 伊川县| 思茅市| 桐乡市| 新沂市| 安仁县| 龙里县| 江城|