访问权限修饰符
在Java中,有四种访问权限修饰符,用于控制类、类的成员(字段和方法)和构造函数的可访问性。这些访问权限修饰符包括public,private,default(不写任何修饰符时默认调用),protected四种
相信大家一定看过类似的表格
+--------------------------------------------------------------------+
| 访问权限修饰符 | 描述 |
+----------------------+----------------------------------------------------+
| public | 公共访问权限,可以从任何地方进行访问 |
|--------------------------------------------------------------------|
| private | 私有访问权限,只能在同一类中进行访问 |
|--------------------------------------------------------------------|
| protected | 受保护访问权限,可以在同一包及子类中进行访问 |
|--------------------------------------------------------------------|
| 默认访问权限 | 默认访问权限,同一包中的其他类可以进行访问 |
+--------------------------------------------------------------------+
修饰符
这里补充一下protected和default的 区别,default又称包级访问修饰符,它仅仅允许自己和同一包里的其他类访问,而protected的权限更宽松,它除了允许自己和同一包里的其他类访问,还允许不同包里的自己的子类去访问,但default是不允许不同包里的子类对其进行访问的
在看完这些表格,我相信很多新手还是和我一样只知道各个修饰符权限高低 的概念,但并没有一个具体的概念,因为我当时连包,类的概念都迷迷糊糊的。
在进行刚开始创建一个项目时,界面大致是这样的
我们尝试在src目录下创建一些文件,主要是Java类和软件包的创建,这里为了突出访问修饰符的区别,类名和包名的命名会采用中文命名
创建的每一类都有一个String类型的变量 ,供其他类去访问,类似于
本来想用代码来展示区别的,但发现编译器会报错,不能直接展现运行结果,就像默认变量的类的子类试图去访问它的父类变量时,super指的就是它的父类。
所以这里还是直接画出访问关系算了,红色箭头代表无法直接访问,绿色则可以
当然设置了访问权限也不是说永远不可以访问,我们可以通过setter和getter方法来进行对私有变量的访问和修改,这个不用去自己写,IDEA可以自动生成。
有了这个两个方法就可以修改和访问本来没有权限访问和修改的变量了,前提是这两个方法是公共的
访问权限修饰符修饰符的意义
对于我来说,可能最容易体会到的就是它的封装性
- 封装性:
修饰符(如private)可以帮助实现类的封装,将类的内部数据和实现细节隐藏起来。这样可以避免直接访问和修改对象的内部状态,通过提供公共接口(如公共方法)来与对象进行交互,提高代码的安全性和可维护性。
- 访问控制(Access control):
修饰符(如public、private、protected、default等)用于限制对类、类成员和类方法的访问范围。通过控制访问权限,可以确保只有需要访问的代码可以访问并操作对象的特定成员,提高代码的安全性和可读性。
- 继承和多态(Inheritance and Polymorphism):
修饰符(如protected)对继承和多态有着重要的作用。protected修饰符(所以一般有子类的才会用这个修饰符)可以使得子类能够继承父类的成员并进行访问,以便在子类中进行重写和扩展。这样可以实现代码的重用和灵活性。