Java中public,private,protected以及default的访问权限区别

**

Java中public,private,protected以及default的访问权限区别

**

  1. 首先,从public的字面意思上就能够知道public所指的是公共的,从而我们可以知道public的访问权限是最为宽松的,它可以在同一个包内访问,也可以在不同的包内进行访问,其作用:它对任何地方的类都是可见的,换言之,就是所有其他的类都可以访问它,它对任何地方的类都是可见的。
    如图:
    在这里插入图片描述

  2. 其次,从private的字面上看就能知道它是表示私有的,从而我们可以知道它的访问权限是比较严格的。它表示是除了类型的创作者和类型的内部方法之外的任何人都没有权限访问,当有人试图去访问它时,就会在编译的时候得到错误信息的。换言之,它只对本类是可见的。
    如图:
    在这里插入图片描述

  3. protected从字面上的意思我们知道是受保护的,它的作用其实是和private的作用相当,唯一的差别仅在继承的类可以访问protected成员,但是不能够去访问private成员的。换言之,除了对自己所在的包内所有类是可见的,还对其他包内的本类的子类是可见的。
    如图:
    在这里插入图片描述

  4. 最后一种就是,Java默认的访问权限,即default,当你没有使用前面所讲的任何访问指定的权限时,它将发挥作用,这种权限通过被称之为包访问权限,因为在这种权限下,类可以访问在同一个包中的其他类的成员,但是在包之外,这些成员如同指定了private一样的,换言之,它只对在自己包内的所有类可见。
    如图:
    在这里插入图片描述

  5. 综上所述,一般我们定义工具类的时候通常会使用public去修饰,因为显然工具类是要提供给所有人去使用的,所以必须定义public。而在其他一些不想让别人随便就可以new出的类,我们通常可以使用privateprivate修饰符可在代码中实现类的封装,而对于public实例变量,其他类可以用圆点运算符随意存取,可能会造成合法但是很荒谬的数据,而定义变量为private后,其他类被强制采用settergetter进行存取,因此我们可以采取在setter中加入逻辑判断来保证数据的合理性。各种的访问情况总结见下图:
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39350172/article/details/109095203