鍍金池/ 教程/ Java/ Java類成員訪問級別
Java參數傳遞
Java靜態(tài)內部類
Java final關鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標準注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實現
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認值
Java異常拋出
Java不可變對象
Java類基礎
Java接口繼承
Java類方法
Java訪問級別
Java對象克隆
Java初始化塊
Java可變長度參數
Java接口字段
Java對象相等比較(Equals)
Java實例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向對象設計
Java對象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構造函數
Java枚舉體
Java接口方法
Java this關鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內部類成員
Java繼承和構造函數
Java類實例化
Java內部類類型
Java對象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內部類
Java類成員訪問級別
Java異常處理教程
Java注解反射
Java構造函數(構造器)
Java導入(import語句的用法)

Java類成員訪問級別

類可以是publicdefault(或包級別)。在本教程中主要介紹 public,private,protected 這幾個訪問級別修辭符的使用。
類成員的訪問級別確定程序的哪個區(qū)域可以訪問它。 以下四個訪問級別修飾符之一可以用于類成員:

  • 公開(public
  • 私有(private
  • 保護(protected
  • 默認或包級別訪問

前三種類型的訪問級別使用以下三個關鍵字之一來指定:public,privateprotected。第四種類型稱為默認訪問級別(或包級別),并且通過不使用訪問修飾符來指定。

如果類成員使用public關鍵字聲明為公開,如果類本身可訪問的話,則可以從Java代碼中的任何位置訪問它。

如果使用private關鍵字將類成員聲明為私有,則只能在聲明類的主體中訪問,而在其他任何地方都不能訪問。

如果使用protected關鍵字將類成員聲明為保護,則可以從同一包中的類或該類的子類來訪問此類成員,即使子類位于不同的包中也是可以訪問的。

如果不為類成員使用任何訪問級別修辭符,則它具有包級別訪問權限。 具有包級別訪問權限的類成員可以從同一個包中訪問。

類成員的訪問級別可以從最嚴格到最不嚴格,即:privatepackage-level,protectedpublic。

示例

以下代碼顯示如何使用不同的訪問級別:

public class Main {
  private int num1; // private access level
  int num2; // package-level access
  protected int num3; // protected access level
  public int num4; // public access level

  public static int count = 1; // public access level

  // private access level
  private void m1() {
  }

  // package-level access
  void m2() {
  }

  // protected access level
  protected void m3() {
  }

  // public access level
  public void m4() {
  }

  // private access level
  private static void doSometing() {

  }
}

注意:可以為類的實例和靜態(tài)成員指定訪問級別。

它是一個約定,指定訪問級別修改器作為聲明中的第一個修飾符。要聲明靜態(tài)公共字段,請首先使用public修飾符,然后使用static修飾符作為約定。必須要考慮類及其成員的訪問級別,以確定類成員是否可訪問。

以下代碼顯示了如何在創(chuàng)建Java bean時使用訪問級別修飾符。

class Account {
  private double balance;

  public double getBalance() {
    return this.balance;
  }

  public int save(double amount) {
    if (amount < 0.0 || Double.isNaN(amount) || Double.isInfinite(amount)) {
      System.out.println("Invalid credit amount:  " + amount);
      return -1;
    }
    this.balance = this.balance + amount;
    return 1;
  }

  public int spend(double amount) {
    if (amount < 0.0 || Double.isNaN(amount) || Double.isInfinite(amount)) {
      System.out.println("Invalid debit amount:  " + amount);
      return -1;
    }
    if (this.balance < amount) {
      System.out.println("Insufficient  fund. Debit   attempted: " + amount);
      return -1;
    }
    this.balance = this.balance - amount;
    return 1;
  }
}

public class Main {
  public static void main(String[] args) {
    Account ac = new Account();
    double balance = ac.getBalance();
    System.out.println("Balance = " + balance);

    ac.save(2);
    ac.spend(1);

    balance = ac.getBalance();
    System.out.println("Balance = " + balance);

    // Attempt to credit and debit invalid amounts
    ac.save(-2);
    ac.spend(Double.POSITIVE_INFINITY);

    balance = ac.getBalance();
    System.out.println("Balance = " + balance);

    // Attempt to debit more than the balance
    ac.spend(200.00);

    balance = ac.getBalance();
    System.out.println("Balance = " + balance);
  }
}

上面的代碼生成以下結果。

Balance = 0.0
Balance = 1.0
Invalid credit amount:  -2.0
Invalid debit amount:  Infinity
Balance = 1.0
Insufficient  fund. Debit   attempted: 200.0
Balance = 1.0

上一篇:Java注解類型下一篇:Java不可變對象