java 访问级别_Java 访问级别成员

Java面向对象设计 - Java访问级别成员

类可以是public或default(或包级别)。

类成员的访问级别确定程序的哪个区域可以访问它。以下四个访问级别修饰符之一可以用于类成员:public

private

protected

Default 或者 package-level访问

前三种类型的访问级别使用以下三个关键字之一指定:public,private或protected。

第四种类型称为默认访问级别(或包级别),并且通过不使用访问修饰符来指定。

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

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

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

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

类成员的访问级别可以从最严格到最不严格,作为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() {

}

}

注意

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

它是一个约定,指定访问级别修改器作为声明中的第一个修饰符。

要声明静态公共字段,请首先使用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);

}

}

上面的代码生成以下结果。

9274ed154d0a09951ff25a2e97440b56.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值