Java中的訪問修飾符有哪些

在 Java 中,訪問修飾符(Access Modifiers)用于控制類、方法、變量和構造器的訪問權限。Java 提供了四種訪問修飾符,分別是:

  • public
  • protected
  • default(包私有,沒有顯式修飾符)
  • private

public

  • 訪問范圍:最大范圍的訪問權限。
  • 作用:
    • 被 public 修飾的類、方法、變量或構造器可以在任何地方訪問。
    • 如果類是 public,則類名必須與文件名一致。
public class MyClass {public int myVar;public void myMethod() {System.out.println("Public Method");}
}

protected

  • 訪問范圍:
    • 同一包內的類可以訪問。
    • 不同包中的子類可以訪問。
  • 作用:
    • 主要用于繼承場景,允許子類訪問父類的成員。
package com.example;public class Parent {protected int myVar;protected void myMethod() {System.out.println("Protected Method");}
}package com.another;import com.example.Parent;public class Child extends Parent {void accessParent() {myVar = 10;       // 可以訪問 protected 變量myMethod();       // 可以訪問 protected 方法}
}

default(包私有)

  • 訪問范圍:
    • 同一包內的類可以訪問。
    • 不同包中的類無法訪問。
  • 作用:
    • 如果不顯式指定訪問修飾符,則默認為 default。
package com.example;class MyClass {int myVar; // default 訪問權限void myMethod() {System.out.println("Default Method");}
}

private

  • 訪問范圍:
    • 僅限當前類內部訪問。
  • 作用:
    • 用于封裝類的內部實現細節,防止外部直接訪問。
public class MyClass {private int myVar;private void myMethod() {System.out.println("Private Method");}public void setMyVar(int value) {this.myVar = value; // 可以在類內部訪問 private 變量}
}

訪問修飾符的總結

訪問修飾符類內部同一包內不同包的子類不同包的非子類
public????????
protected???????
default??????
private?????

訪問修飾符的使用場景

public:
用于暴露 API,如工具類的方法或常量。例如:public static final int MAX_VALUE = 100;

protected:
用于允許子類擴展父類的功能。例如:protected void init() { … }

default:
用于包內共享的輔助類或工具方法。例如:void helperMethod() { … }

private:
用于封裝類的內部實現細節。例如:private String secretKey;

注意事項

  • 類的訪問修飾符只能是 public 或 default(包私有)。
  • 接口中的方法默認是 public,變量默認是 public static final。
  • 構造器可以使用 public、protected、default 或 private。
  • private 構造器常用于單例模式或工具類。
package com.example;public class AccessExample {public int publicVar = 1;protected int protectedVar = 2;int defaultVar = 3; // default 訪問權限private int privateVar = 4;public void publicMethod() {System.out.println("Public Method");}protected void protectedMethod() {System.out.println("Protected Method");}void defaultMethod() {System.out.println("Default Method");}private void privateMethod() {System.out.println("Private Method");}
}class AnotherClass {void testAccess() {AccessExample example = new AccessExample();System.out.println(example.publicVar);       // 可以訪問System.out.println(example.protectedVar);    // 可以訪問System.out.println(example.defaultVar);      // 可以訪問// System.out.println(example.privateVar);  // 編譯錯誤,無法訪問 private 變量}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897936.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897936.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897936.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【公務員考試】高效備考指南

高效備考指南:從計劃制定到心態調整的全面攻略 公務員考試競爭激烈,備考過程既需要科學規劃,也需要持之以恒的努力。結合多位高分考生的經驗與專業機構的指導,本文整理了一套系統化的備考策略,涵蓋目標設定、學習方法…

工程實踐:如何使用SU17無人機來實現室內巡檢任務

阿木實驗室最近發布了科研開發者版本的無人機SU17,該無人機上集成了四目視覺,三維激光雷達,云臺吊艙,高算力的機載計算機,是一個非常合適的平臺用于室內外巡檢場景。同時阿木實驗室維護了多個和無人機相關的開源項目。…

強大的CSS變量

在 CSS 中,變量(Custom Properties) 允許你定義可重用的值,方便在整個樣式表中使用和修改。CSS 變量的基本語法如下: 1. 定義 CSS 變量 CSS 變量通常在 :root 偽類中定義,以便它們可用于整個文檔&#xf…

藍橋杯嵌入式賽道復習筆記1(led點亮)

前言 基礎的文件創建,參賽資源代碼的導入,我就不說了,直接說CubeMX的配置以及代碼邏輯思路的書寫,在此我也預祝大家人人拿國獎 理論講解 原理圖簡介 1.由于存在PC8引腳到PC15引腳存在沖突,那么官方硬件給的解決方案…

Linux進程1.0--task_struct

1.硬件:馮諾依曼體系結構: 單個分析:、 數據流向:數據必須先進入輸入設備,再到存儲器,然后由存儲器給控制器,控制器收到以后進行相應的處理后,再傳回存儲器,存儲器最終傳…

本地部署Jina AI Reader:用Docker打造你的智能解析引擎

本地部署Jina AI Reader:用Docker打造你的智能解析引擎 🌟 引言:為什么需要本地部署?📌 場景應用圖譜🔧 部署指南(Linux環境)1. 環境準備2. Docker部署3. 驗證服務狀態 &#x1f680…

貪心算法簡介(greed)

前言: 貪心算法(Greedy Algorithm)是一種在每個決策階段都選擇當前最優解的算法策略,通過局部最優的累積來尋求全局最優解。其本質是"短視"策略,不回溯已做選擇。 什么是貪心、如何來理解貪心(個人對貪心的…

代碼隨想錄day17 二叉樹part05

654.最大二叉樹 給定一個不重復的整數數組 nums 。 最大二叉樹 可以用下面的算法從 nums 遞歸地構建: 創建一個根節點,其值為 nums 中的最大值。 遞歸地在最大值 左邊 的 子數組前綴上 構建左子樹。 遞歸地在最大值 右邊 的 子數組后綴上 構建右子樹。 返回 nums …

宇樹人形機器人開源模型

1. 下載源碼 https://github.com/unitreerobotics/unitree_ros.git2. 啟動Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 這個錯誤通常出現在虛擬機環境中運行需要OpenGL支持的應用…

通過特征值和特征向量實現的圖像壓縮和特征提取

前文,我們在學習人工智能的線性代數基礎的時候,就了解到,矩陣在人工智能中被廣泛使用,接下來我們就從大家非常常見的圖像開始,深度理解矩陣在人工智能中的應用。有關線性代數基礎的文章可以看的我CSDN:人工智能中的線性…

藍橋杯2023年第十四屆省賽真題-整數刪除 暴力-->鏈表+小根堆

題目來自DOTCPP: 思路: ①每次找到數列中的最小值下標,然后用狀態數組st標記它,相當與刪除它,之后就不會訪問它。 ②對最小值下標左邊和右邊判斷一下,看有沒有數字,如果有就把最小值加到兩邊第…

springboot438-基于SpringBoot的數字化教學資源管理系統(源碼+數據庫+純前后端分離+部署講解等)

💕💕作者: 愛笑學姐 💕💕個人簡介:十年Java,Python美女程序員一枚,精通計算機專業前后端各類框架。 💕💕各類成品Java畢設 。javaweb,ssm&#xf…

藍橋杯刷題——第十五屆藍橋杯大賽軟件賽省賽C/C++ 大學 B 組

一、0握手問題 - 藍橋云課 算法代碼&#xff1a; #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力&#xff0c;題意很清晰&#xff0c;累加即可。 二、0小球反彈 - 藍…

跨境衛士跟vps哪個更好用?跨境衛士為賣家提供固定IP環境

跨境衛士是通過為賣家提供固定的環境 i p來隔離本地電腦環境&#xff0c;為賣家創造一個真實獨立的物理環境&#xff0c;讓買家再任意電腦&#xff0c;任意網絡下都能夠安全的管理賬號。跨境衛士和紫鳥原理一樣&#xff0c;是通過為賣家提供固定的環境 i p來隔離本地電腦環境&a…

coding ability 展開第四幕(滑動指針——鞏固篇)超詳細!!!!

文章目錄 前言水果成籃思路 找到字符串中所有字母異位詞思路 串聯所有單詞的子串思路 最小覆蓋子串思路 總結 前言 本專欄上一篇博客&#xff0c;帶著大家從認識滑動窗口到慢慢熟悉 相信大家對滑動窗口已經有了大概的認識 其實主要就是抓住——一段連續的區間 今天來學習一些滑…

圖解AUTOSAR_CP_BSW_General

AUTOSAR BSW通用規范詳解 AUTOSAR基礎軟件模塊通用規范與架構解析 目錄 1. 概述 1.1. AUTOSAR BSW通用規范簡介1.2. 文檔目的與范圍2. BSW模塊文件結構 2.1. 標準文件組織2.2. 命名規范3. BSW模塊接口 3.1. 接口類型3.2. 模塊API3.3. 配置參數4. BSW通用架構 4.1. 分層架構4.2.…

如何在Futter開發中做性能優化?

目錄 1. 避免不必要的Widget重建 問題&#xff1a;頻繁調用setState()導致整個Widget樹重建。 優化策略&#xff1a; 2. 高效處理長列表 問題&#xff1a;ListView一次性加載所有子項導致內存暴漲。 優化策略&#xff1a; 3. 圖片加載優化 問題&#xff1a;加載高分辨率…

組件通信框架ARouter原理剖析

組件通信框架ARouter原理剖析 一、前言 隨著Android應用規模的不斷擴大&#xff0c;模塊化和組件化開發變得越來越重要。ARouter作為一個用于幫助Android應用進行組件化改造的框架&#xff0c;提供了一套完整的路由解決方案。本文將深入分析ARouter的核心原理和實現機制。 二…

Netty啟動源碼NioEventLoop剖析accept剖析read剖析write剖析

學習鏈接 NIO&Netty - 專欄 Netty核心技術十–Netty 核心源碼剖析Netty核心技術九–TCP 粘包和拆包及解決方案Netty核心技術七–Google ProtobufNetty核心技術六–Netty核心模塊組件Netty核心技術五–Netty高性能架構設計 聊聊Netty那些事兒 - 專欄 一文搞懂Netty發送數…

2024年12月CCF-GESP編程能力等級認證C++編程一級真題解析

一級真題的難度: ? CCF-GESP編程能力等級認證C++編程一級真題的難度適中?。這些真題主要考察的是C++編程的基礎知識、基本語法以及簡單的算法邏輯。從搜索結果中可以看到,真題內容包括了選擇題、編程題等題型,涉及的內容如C++表達式的計算、基本輸入輸出語句的理解…