Java中的訪問權限控制


Java提供了public, private, protected 三個訪問權限修飾詞,提供了以下四種訪問權限控制機制:

1、包訪問權限;

2、Public訪問權限;

3、Private訪問權限;

4、Protected訪問權限;

 

1、包訪問權限

包訪問權限是Java為了便於程序員開發而給定的一種權限選擇。

當方法或域未給定訪問權限限制符時,其默認具有該權限。具有該權限的方法和域成員,在包內是完全可見的(注意要與其對象依附在一起),而包外則不可見。

這有點類似於C++中友元類,友元類見彼此可見,以簡化訪問。

E:

Package accesscontrol

//Animal.java

public class Animal

{

  void bark()

}

Package accesscontrol

//Test.java

public class Test

{

  main()

  {

  Animal a= new Animal();

     a.bark();//此處直接訪問了Animal類中的bark()方法

  }

}

由於Animal類和Test類都被打包在了同一個Package下,Animal中的bark()方法為包訪問權限,故對類Test可見。

對java文件中的類也是如此,若未指定限制符,其默認為包訪問權限,只能在包內被使用。包外是無法利用其生成對象的(不可見)。

注意:當決定一個類對包外可見的時候,除了要將類得訪問限定符改為public意外,自定義的構造器限定符也必須修改為public,不然將導致外部不可見。

       

 

2、public 權限

當在方法或域前面顯式的給定public限定符的時候,其具有該權限控制。

public權限是最為寬松的一種權限控制,對包的內、外部都是完全可見的。

 java最多只允許一個java文件中出現一個public類(該類向外提供接口,並與該java文件的名稱完全一致)。

當一個java文件中無一個Public類時,表明其僅供包內使用,對外界不可見!

注意:類只有包訪問權限和public訪問權限兩類。

 

3、Private訪問權限

Private是訪問限定最為嚴格一種權限。

當方法或域為private權限時,表明其只針對該類的內部可見,類的外部(包括同一包內的其它類)是不可見的。

 

//Animal.java

public class Animal

{

  private void bark()

}

Package accesscontrol

//Test.java

public class Test

{

  main()

  {

  Animal a= new Animal();

     a.bark();//此處將造成編譯錯誤,bark()方法為private方法,僅對Animal類 內部可見,現在在Test類內部。

  }

}

 

 

4、protected訪問權限

protected權限是一種嚴格程度介於public和private之間的權限,具有prtoected權限的域和方法只能對其自身和導出類可見。

 

在面向對象的設計當中,最常用的為public和private訪問權限兩種。

一般情況下將域定義為private,將方法定義為public。外界使用該類時,通過public方法使用其接口,而具體的域成員則對外部屏蔽,只能通過類提供的接口間接訪問。

Example:

  public class Dog

    {

  private int age=0;

     public setAge(int num)

    {

  age=num+1;

    }

  }

此處,age域對外部不可見,要想對其進行操作,必須使用Dog類提供的接口setAge(int num)。

注意到setAge的方法體age=num+1;對用戶給出的年齡加1了以后再修改了age屬性,這種修改對使用者是不可見的,有時又是非常的必要的!

 

 

 

 

 

 

 

 


免責聲明!

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



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