java中的四個修飾詞(訪問權限)


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 會報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM