当前位置: 首页 > news >正文

Java 中的访问修饰符有什么区别?

Java 中的访问修饰符用于控制类、类的成员变量和方法的访问权限,主要有以下四种:

  1. public:公共访问修饰符,可以被任何类访问。public 修饰的类、成员变量和方法可以在任何地方被访问到。

  2. protected:受保护的访问修饰符,可以被类本身、子类和同一个包中的其他类访问。protected 修饰的成员变量和方法可以在子类中被访问到,但不能在其他包中被访问到。

  3. default(即默认):默认访问修饰符,只能被同一个包中的其他类访问。当一个成员变量或方法没有指定访问修饰符时,它的访问权限默认为 default。

  4. private:私有访问修饰符,只能被类本身访问。private 修饰的成员变量和方法不能被子类和其他类访问。

区别如下:

  • public:公共的,对所有类可见;
  • protected:受保护的,对本包和所有子类可见;
  • default(即默认):包内可见;
  • private:只对本类可见。

需要注意的是,访问修饰符是 Java 语言的一项重要特性,合理的使用访问修饰符可以提高代码的安全性和可读性。建议在编写Java代码时,根据需要为每个类、成员变量和方法选择适当的访问修饰符。

除了上述的区别,还有一些需要注意的点:

  1. 类的访问修饰符只能是 public 或默认,不能是 protected 或 private。

  2. 成员变量和方法的访问修饰符可以是 public、protected、默认或 private,可以根据需要选择。

  3. 在同一个包中,可以访问默认和 public 访问修饰符修饰的成员,不能访问 protected 和 private 修饰的成员。

  4. 子类继承父类时,可以继承父类中除 private 修饰的成员外的所有成员。

  5. 在方法中,可以访问该方法所属类中的所有成员,包括 private 修饰的成员。

  6. 接口中的方法默认是 public 的,成员变量默认是 public static final 的。

综上所述,访问修饰符可以控制类、类的成员变量和方法的访问权限,不同的访问修饰符具有不同的访问权限,使用访问修饰符可以提高代码的安全性和可读性。

补充一些关于访问修饰符的注意点:

  1. 如果一个类没有指定访问修饰符,则默认为包可见性,即该类只能被同一个包中的其他类访问。

  2. 子类可以继承父类的 public 和 protected 成员,但不能继承 private 成员。在子类中可以通过 super 关键字来访问父类的 protected 成员。

  3. 在同一个类中,private 成员只能被本类中的其他成员访问,而不能被外部类访问。

  4. 在 Java 9 之后,新增了一个模块化系统,通过 module-info.java 文件中的 exports 和 requires 关键字可以控制模块之间的访问权限。

  5. 在 Java 中,静态成员变量和静态方法的访问修饰符与非静态成员变量和非静态方法的访问修饰符是一样的。

  6. 对于一个接口中定义的方法,默认访问修饰符为 public,而且不能使用 private 或 protected 修饰符。如果需要实现一个只在当前包中可见的方法,可以使用默认访问修饰符。

总之,访问修饰符是 Java 语言的一个重要特性,使用合适的访问修饰符可以控制类、类的成员变量和方法的访问权限,增强程序的安全性和可维护性。

http://www.lryc.cn/news/68129.html

相关文章:

  • Go基础篇:接口
  • 边缘计算:数字时代的新战场
  • PBDB Data Service:Fossil occurrences(化石产出记录)
  • 虾皮Shopee商品详情接口(item_get-根据ID取商品详情)代码封装
  • 原生js手动实现一个多级树状菜单效果(高度可过渡变化) + 模拟el-menu组件实现(简单版)
  • RK3568平台开发系列讲解(Linux内存篇)Linux内存管理框架
  • 你的编程能力从什么时候开始突飞猛进?
  • 滨州高企认定条件
  • Azkaban学习——单机版安装与部署
  • table标签-移动端适配
  • Yolov8改进---注意力机制:DoubleAttention、SKAttention,SENet进阶版本
  • 【逆向工程核心原理:TLS回调函数】
  • “Shell“Awk命令
  • 射频放大器的原理和作用(射频放大器和功率放大器的区别)
  • 揭秘KubeEdge边缘网络项目EdgeMesh:如何打造高速、安全、低延迟的互联网连接
  • Java设计模式 14-访问者模式
  • 【数据结构】线性表之链表
  • 微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台
  • Linux开发板安装Python环境
  • ChatGPT 聊天接口API 使用
  • 软件测试月薪2万,需要技术达到什么水平?
  • 从入门到进阶,Vue框架让Web开发更简单高效
  • 怎么缩小照片的kb,压缩照片kb的几种方法
  • 2. 注解Annotation
  • 【Leetcode -495.提莫攻击 -496.下一个更大的元素Ⅰ】
  • 肝一肝设计模式【八】-- 外观模式
  • Maven uber-jar(带依赖的打包插件)maven-shade-plugin
  • MySQL基础(二十八)索引优化与查询优化
  • 初步认识性能测试和完成一次完整的性能测试
  • 使用插件快速生成代码