举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > java四种访问级别 Java 访问级别成员

java四种访问级别 Java 访问级别成员

2023-03-12 03:31 Java教程

java四种访问级别 Java 访问级别成员

java四种访问级别

Java语言提供了四种不同的访问级别,它们分别是:public、protected、default和private。这四种访问级别可以用来控制类、方法和变量的可见性,从而保护代码的安全性和完整性。

public 访问级别是最高的,它表明该成员可以在任何地方被访问。如果一个成员声明为public,那么它就可以在所有的包中使用。

public class Test { 
    public int a; 
    public void method() { 
        System.out.println("This is a public method"); 
    } 
}

protected 访问级别表明该成员只能在当前包中使用,也可以在子类中使用。如果一个成员声明为protected,那么它就只能在当前包中使用,但是子类也可以使用该成员。

public class Test { 
    protected int a; 
    protected void method() { 
        System.out.println("This is a protected method"); 
    } 
}

default 访问级别表明该成员只能在当前包中使用。如果一个成员声明为default,那么它就只能在当前包中使用,不能被其他包中的代码所调用。

public class Test { 
    int a; // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier   // default access modifier     void method() { 
        System.out.println("This is a package-private method"); 
    } 
}

private 访问级别是最低的,它表明该成员只能在当前类中使用。如果一个成员声明为private,那么它就不能被其他代码所调用。

public class Test { 
    private int a; 

    private void method() { 
        System.out.println("This is a private method"); 

    }     }

四种不同的访问权限都有各自独特的作用和意义:public 可以保证代码的开放性和透明性;protected 可以保护代码免于外部干扰而对子类开放;default 可以保证代码不会对外部造成干扰而对内部开放;private 可以保障代码不会对外郩造成干扰而对内郩开放。

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

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

阅读全文
以上是鳄鱼CMS为你收集整理的java四种访问级别 Java 访问级别成员全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们