Java类成员访问级别

类可以是publicdefault(或包级别)。在本教程中主要介绍 publicprivateprotected 这几个访问级别修辞符的使用。
类成员的访问级别确定程序的哪个区域可以访问它。 以下四个访问级别修饰符之一可以用于类成员:

  • 公开(public
  • 私有(private
  • 保护(protected
  • 默认或包级别访问

前三种类型的访问级别使用以下三个关键字之一来指定:publicprivateprotected。第四种类型称为默认访问级别(或包级别),并且通过不使用访问修饰符来指定。

如果类成员使用public关键字声明为公开,如果类本身可访问的话,则可以从Java代码中的任何位置访问它。

如果使用private关键字将类成员声明为私有,则只能在声明类的主体中访问,而在其他任何地方都不能访问。

如果使用protected关键字将类成员声明为保护,则可以从同一包中的类或该类的子类来访问此类成员,即使子类位于不同的包中也是可以访问的。

如果不为类成员使用任何访问级别修辞符,则它具有包级别访问权限。 具有包级别访问权限的类成员可以从同一个包中访问。

类成员的访问级别可以从最严格到最不严格,即:privatepackage-levelprotectedpublic

示例

以下代码显示如何使用不同的访问级别:

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() {

  }
}

注意:可以为类的实例和静态成员指定访问级别。

它是一个约定,指定访问级别修改器作为声明中的第一个修饰符。要声明静态公共字段,请首先使用public修饰符,然后使用static修饰符作为约定。必须要考虑类及其成员的访问级别,以确定类成员是否可访问。

以下代码显示了如何在创建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 this关键字

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程