Java 访问修饰符

培训教学 潘老师 8个月前 (08-27) 177 ℃ (0) 扫码查看

Java访问修饰符是一种用来控制类、方法、变量、构造函数以及其他类成员的可访问性的关键字。它们帮助我们管理代码的封装性和安全性。本教程将介绍Java中常用的访问修饰符,包括publicprivateprotecteddefault(默认不写)。

1. 访问修饰符

简而言之,让我们快速比较一下这些访问修饰符。

  • public—可以被任何类访问
  • protected – 在同一个包和包外的子类中可访问
  • default- 只能在同一个包中访问
  • private – 只能在同一个类中访问

访问说明符可以根据其严格性进行排序,如下所示。public的限制最少,private 的限制最多。

public> protected  > default > private

2.Java访问修饰符的作用范围

3. public

public修饰的成员可以从任何地方访问。公共类、方法、构造函数或接口可以从应用程序中的任何其他类访问。但是,如果我们尝试访问的公共类位于不同的包中,那么我们必须在使用它之前导入该类。

public class Data {

  private String format;

  public String getFormat() {
    return this.format;
  }

  public void setFormat(String format) {
    this.format = format;
  }
}

在上面的示例中,getFormat()setFormat()方法是公共的,因此可以从任何类访问它们。

请注意,接口中的字段是隐式的public static final,接口中的方法默认为public.

4. protected

protected修饰的成员可以被同一个包的类和包外的子类访问。

public class Data {

  protected void displayMessage(){
    System.out.println("Test message");
  }
}

在Data类中,方法displayMessage()被声明为受保护的,因此它可以被同一包中存在的所有类HelloWorld.java以及其他包中存在的子类访问。

//在同一个包中
public class Main {

  public static void main(String[] args) {

    Data data = new Data();
    data.displayMessage();
  }
}

如果我们尝试访问另一个包中的displayMessage()而不扩展Data类,我们会收到以下编译错误:

'displayMessage()' has protected access in 'com.panziye.core.basic.accessModifiers.package1.Data'

当我们继承Data类后,我们就可以在当前包之外访问displayMessage()了。

public class Main extends Data {

  public static void main(String[] args) {

    Main main = new Main();
    main.displayMessage();
  }
}

5. default

默认访问修饰符意味着我们不会显式声明类、字段、方法等的访问修饰符。默认成员只能由同一包中的类访问。

让我们从Data类中的displayMessage()中删除受保护的访问。它将访问权限更改为default。

public class Data {

  void displayMessage(){
    System.out.println("Default Test message");
  }
}

现在,当我们尝试访问包外子类中的displayMessage()时,我们将开始收到编译错误:

'displayMessage()' is not public in 'com.panziye.core.basic.accessModifiers.package1.Data'. Cannot be accessed from outside package

5. private

private访问修饰符是限制性最强的访问级别。最顶层的类和接口不能是private 的。私有成员只能在同一类中访问。私有方法、变量和构造函数只能在声明的类本身内访问。

我们再次修改前面的示例,将displayMessage()方法的默认访问权限更改为私有访问权限。

public class Data {

  private void displayMessage(){
    System.out.println("Default Test message");
  }
}

现在该方法是私有的,因此其他类不能直接访问它。

6. 访问控制级别

有两个级别的访问控制。

  • 类级别访问 – 允许修饰符为public或package-private(默认)。
  • 方法级访问 – 允许修饰符为public、private、protected或package-private(默认)。

局部变量和形式参数不能带有访问修饰符。根据作用域规则,它们从本质上来说对外部是不可访问的,因此它们实际上是私有的。

private 和 protected 都可以(并且经常)应用于嵌套类和接口,但不能应用于顶级类和接口。

三、结论

访问级别以两种方式影响我们。

  • 首先,当您使用来自其他源的类时,访问级别决定您自己的类可以使用这些类的哪些成员。
  • 其次,当你编写一个类时,你必须决定类中每个成员变量和每个方法应该具有什么访问级别。

如果其他程序员使用您的类,您需要确保不会发生误用错误。访问级别可以帮助您做到这一点。

教程 Java基础教程

文章目录 前言  第1章 Java语言基础 第2章 流程控制语句 第3章 面向对象编程 第4章 Java 字符 […]


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/8427.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】