Java 訪問級別成員

2018-01-18 15:19 更新

Java面向?qū)ο笤O(shè)計 - Java訪問級別成員


類可以是public或default(或包級別)。

類成員的訪問級別確定程序的哪個區(qū)域可以訪問它。以下四個訪問級別修飾符之一可以用于類成員:

  • public
  • private
  • protected
  • Default 或者 package-level訪問

前三種類型的訪問級別使用以下三個關(guān)鍵字之一指定:public,private或protected。

第四種類型稱為默認(rèn)訪問級別(或包級別),并且通過不使用訪問修飾符來指定。

如果使用 public 關(guān)鍵字將類成員聲明為public,則可以從Java代碼中的任何位置訪問它,如果類本身是可訪問的。

如果使用 private 關(guān)鍵字將類成員聲明為private,則只能在聲明類的主體內(nèi)訪問,而在其他任何地方都不能訪問。

如果使用 protected 關(guān)鍵字將類成員聲明為protected,則可以從同一個包或從類的后代訪問,即使后代位于不同的包中也是如此。

如果我們不為類成員使用任何訪問級別修改器,則它具有包級別訪問權(quán)限。具有包級別訪問權(quán)限的類成員可以從同一個包訪問。

類成員的訪問級別可以從最嚴(yán)格到最不嚴(yán)格,作為private,package-level,protected和public。

例子

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

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);
  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號