Java類成員的訪問控制權限
有了包的概念之后,下面就可以開始為讀者講解 JAVA 語言之中的訪問控制權限 的概念了。在 JAVA 中有四種訪問控制權限,分別為:private、default、protected、public。
1、 private 訪問控制符
在前面已經介紹了 private 訪問控制符的作用,如果一個成員方法或成員變量名前 使用了 private 訪問控制符,那么這個成員只能在這個類的內部使用。
注意: 不能在方法體內聲明的變量前加 private 修飾符。
2、 默認訪問控制符
如果一個成員方法或成員變量名前沒有使用任何訪問控制符,就稱這個成員所擁 有的是默認的(default)訪問控制符。默認的訪問控制成員可以被這個包中的其它類 訪問。如果一個子類與其父類位於不同的包中,子類也不能訪問父類中的默認訪問控 制成員。
3、 protected 訪問控制符
如果一個成員方法或成員變量名前使用了 protected 訪問控制符,那么這個成員既 可以被同一個包中的其它類訪問,也可以被不同包中的子類訪問。
3、 protected 訪問控制符
如果一個成員方法或成員變量名前使用了 protected 訪問控制符,那么這個成員既 可以被同一個包中的其它類訪問,也可以被不同包中的子類訪問。
4、 public 訪問控制符
如果一個成員方法或成員變量名前使用了 public 訪問控制符,那么這個成員可以 被所有的類訪問,不管訪問類與被訪問類是否在同一個包中。
對於 private、default、public 三種控制權限,前面已經為讀者介紹過了,下 面的范例為讀者講解 protected 關鍵字的使用方法:
范例:Person.java
01 package demo.java.a
02
03 public class Person
04 {
05 protected String name
06 public String talk()
07 {
08 return "Person —— >> talk()"
09 }
10 }
程序說明:
程序第 5 行聲明一 String 類型的屬性 name,該變量用 protected 關鍵字聲明,所 以此屬性只能在本類及其子類中使用。
范例:Student.java
01 package demo.java.b
02 import demo.java.a.*
03
04 public class Student extends Person
05 {
06 public Student(String name)
07 {
08 this.name = name
09 }
10 public String talk()
11 {
12 return "Person —— >> talk() , "+this.name
13 }
14 }
程序說明:
1、 程序第 2 行,導入 Person 類。
2、 程序第 4 行 Student 類繼承自 Person 類
3、 程序第 8 行 Student 類訪問了 Person 類中的 name 屬性
范例:TestPackage4.java
01 package demo.java.c
02 import demo.java.b.*
03
04 class TestPackage4
05 {
06 public static void main(String[] args)
07 {
08 Student s = new Student("javafans")
09 s.name = "javafans"
10 System.out.println(s.talk())
11 }
12 }
編譯結果:
TestPackage4.java:9: name has protected access in demo.java.a.Person
s.name = "javafans"
^
1 error
可以發現,在程序第 9 行,通過對象調用受保護的屬性,所以程序在編譯時 JDK 會報錯。