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

news/2024/12/29 5:00:05/

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.ppmy.cn/news/69501.html

相关文章

【C++】8.编译:CMake工具入门

😏*★,*:.☆( ̄▽ ̄)/$:*.★* 😏这篇文章主要介绍CMake工具的入门使用。————————————————学其所用,用其所学。——梁启超————————————————— 欢迎来到我的博客,一起学习知识…

【Hello Algorithm】归并排序及其面试题

作者:小萌新 专栏:算法 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:介绍归并排序和几道面试题 归并排序及其面试题 归并排序归并排序是什么归并排序的实际运用归并排序的迭代写法归并排序的时间复杂度 归并排序算法题小…

2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。

2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。 答案2023-04-30: resampling_audio.c 是 FFmpeg 中的一个源文件,其主要功能是实现音频重采样。 音频重采样是指将一段音频数据从一个采样率…

mysql事务及搜索引擎

mysql事务后半部分 加快查询速度索引会自动排序,(升序) select * from t1;全盘扫描 where可以索引查找show create table 索引是一个排序的列表,包含字段值和相应行数据的物理地址 事务是一种机制,一个…

Spark大数据处理讲课笔记3.5 RDD持久化机制

文章目录 零、本讲学习目标一、RDD持久化(一)引入持久化的必要性(二)案例演示持久化操作1、RDD的依赖关系图2、不采用持久化操作3、采用持久化操作 二、存储级别(一)持久化方法的参数(二&#x…

android log的使用

现在在分析一个android netd的问题,只要一开启热点, for (String ifname : added) {try {Log.d(TAG, "TetheredState, processMessage CMD_TETHER_CONNECTION_CHANGED, add mIfaceName " mIfaceName " ifname " ifname );mNetd.…

etcd的Watch原理

在 Kubernetes 中,各种各样的控制器实现了 Deployment、StatefulSet、Job 等功能强大的 Workload。控制器的核心思想是监听、比较资源实际状态与期望状态是否一致,若不一致则进行协调工作,使其最终一致。 那么当你修改一个 Deployment 的镜像…

蛋糕烘焙店小程序开发 让生活多点甜

蛋糕甜品因为较高的颜值、香甜的口感深受大众喜欢,当我们路过一家蛋糕烘焙店的时候,飘香的味道让我们流连忘返。但是互联网时代,各个行业都在转型,蛋糕烘焙店也需要由传统线下店面向线上线下结合的方式转变,以求摆脱区…