Java访问修饰符(访问控制符)
Java 通過修飾符來控制類、屬性和方法的訪問權限和其他功能,通常放在語句的最前端。例如:
Java 的修飾符很多,分為訪問修飾符和非訪問修飾符。本節僅介紹訪問修飾符,非訪問修飾符會在后續介紹。
訪問修飾符也叫訪問控制符,是指能夠控制類、成員變量、方法的使用權限的關鍵字。
在面向對象編程中,訪問控制符是一個很重要的概念,可以使用它來保護對類、變量、方法和構造方法的訪問。
Java支持四種不同的訪問權限:
| public | 共有的,對所有類可見。 |
| protected | 受保護的,對同一包內的類和所有子類可見。 |
| private | 私有的,在同一類內可見。 |
| 默認的 | 在同一包內可見。默認不使用任何修飾符。 |
public:公有的
被聲明為public的類、方法、構造方法和接口能夠被任何其他類訪問。
如果幾個相互訪問的public類分布在不用的包中,則需要導入相應public類所在的包。由于類的繼承性,類所有的公有方法和變量都能被其子類繼承。
下面的方法使用了公有訪問控制:
Java程序的main() 方法必須設置成公有的,否則,Java解釋器將不能運行該類。
protected:受保護的
被聲明為protected的變量、方法和構造方法能被同一個包中的任何其他類訪問,也能夠被不同包中的子類訪問。
protected訪問修飾符不能修飾類和接口,方法和成員變量能夠聲明為protected,但是接口的成員變量和成員方法不能聲明為protected。
子類能訪問protected修飾符聲明的方法和變量,這樣就能保護不相關的類使用這些方法和變量。
下面的父類使用了protected訪問修飾符,子類重載了父類的bark()方法。
如果把bark()方法聲明為private,那么除了Dog之外的類將不能訪問該方法。如果把bark()聲明為public,那么所有的類都能夠訪問該方法。如果我們只想讓該方法對其所在類的子類可見,則將該方法聲明為protected。
private:私有的
私有訪問修飾符是最嚴格的訪問級別,所以被聲明為private的方法、變量和構造方法只能被所屬類訪問,并且類和接口不能聲明為private。
聲明為私有訪問類型的變量只能通過類中公共的Getter/Setter方法被外部類訪問。
private訪問修飾符的使用主要用來隱藏類的實現細節和保護類的數據。
下面的類使用了私有訪問修飾符:
例子中,Dog類中的name、age變量為私有變量,所以其他類不能直接得到和設置該變量的值。為了使其他類能夠操作該變量,定義了兩對public方法,getName()/setName() 和 getAge()/setAge(),它們用來獲取和設置私有變量的值。
this 是Java中的一個關鍵字,本章會講到,你可以點擊??預覽。
在類中定義訪問私有變量的方法,習慣上是這樣命名的:在變量名稱前面加“get”或“set”,并將變量的首字母大寫。例如,獲取私有變量 name 的方法為 getName(),設置 name 的方法為 setName()。這些方法經常使用,也有了特定的稱呼,稱為 Getter 和 Setter 方法。
默認的:不使用任何關鍵字
不使用任何修飾符聲明的屬性和方法,對同一個包內的類是可見的。接口里的變量都隱式聲明為public static final,而接口里的方法默認情況下訪問權限為public。
如下例所示,類、變量和方法的定義沒有使用任何修飾符:
訪問控制和繼承
請注意以下方法繼承(不了解繼承概念的讀者可以跳過這里,或者?預覽)的規則:
- 父類中聲明為public的方法在子類中也必須為public。
- 父類中聲明為protected的方法在子類中要么聲明為protected,要么聲明為public。不能聲明為private。
- 父類中默認修飾符聲明的方法,能夠在子類中聲明為private。
- 父類中聲明為private的方法,不能夠被繼承。
如何使用訪問控制符
訪問控制符可以讓我們很方便的控制代碼的權限:
- 當需要讓自己編寫的類被所有的其他類訪問時,就可以將類的訪問控制符聲明為 public。
- 當需要讓自己的類只能被自己的包中的類訪問時,就可以省略訪問控制符。
- 當需要控制一個類中的成員數據時,可以將這個類中的成員數據訪問控制符設置為 public、protected,或者省略。
-
4.?Java this關鍵字詳解
5.?Java方法重載
6.?Java類的基本運行順序
7.?Java包裝類、拆箱和裝箱詳解
8.?再談Java包
9.?源文件的聲明規則四. Java繼承和多態
1.?繼承的概念與實現
2.?Java super關鍵字
3.?繼承中的方法的覆蓋和重載
4.?多態和動態綁定
5.?instanceof 運算符
6.?多態對象的類型轉換
7.?Java static關鍵字
8.?Java final關鍵字9.?Java Object類
五. 面向對象高級特性
1.?Java內部類及其實例化
2. 內部類的分類
3.?抽象類的概念和使用
4.?接口的概念和使用
5.?接口和抽象類的區別
6.?Java 泛型
7.?泛型通配符和類型參數的范圍
總結
以上是生活随笔為你收集整理的Java访问修饰符(访问控制符)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 二进制文件读操作
- 下一篇: C++ 通讯录设计(六)