java--访问修饰符

java访问修饰符

java中有四种访问修饰符,分别是:

  1. public (公共的)
  2. friendly (默认的)
  3. protected (受保护的)
  4. private (私有的)

通过访问修饰符,能控制变量的访问范围,实现对类的封装。

tips:

  • 类, 只能被 public 和 friendly 修饰。
  • 属性和方法,四种都可使用。

1、功能

四种访问修饰符的访问控制范围还受是否有打包的影响,不过可以类比理解。

(1) 有打包

解释:即每个类文件中都有 package 语句。

在这种情况下,访问修饰符符合主流的定义。

public(共享)

​ 1、修饰属性、方法、类。
​ 2、无访问限制。只要导包正确,任何位置的文件都可访问。

friendly (默认)

​ 1、修饰属性、方法、类
​ 2、具有包访问性。能被同一包中的其他类访问
​ 3、其他包不可访问。

protected(受保护的)

​ 1、修饰属性和方法,不能修饰类。
​ 2、具有包访问性:能被同一包中的其他类可访问
​ 3、具有继承访问性:任意路径下的类,通过继承共享类,便能访问父类中的受保护的成员。

private(私有的)

​ 1、修饰属性和方法,不能修饰类。
​ 2、私有属性和方法,只有类自身可访问,外部不可访问。

(2)未打包

解释:即每个类文件中都没有 package 语句。

在这种情况下,在同一目录下的类文件不被承认是同包。导致访问修饰符的包访问性不起作用。

tips:

1、没有打包的类,无法通过导包来访问。

2、要访问没有打包的类,必须在编译运行命令中设置寻包路径。

public(共享)

​ 1、修饰属性、方法、类。
​ 2、无访问限制。

friendly (默认)

​ 1、修饰属性、方法、类
​ 2、可被同一文件中类访问。

protected(受保护的)

​ 1、修饰属性和方法,不能修饰类。
​ 2、可被同一文件中类访问。
​ 3、具有继承访问性:任意路径下的类,通过继承共享类,便能访问父类中的受保护的成员。

private(私有的)

​ 1、修饰属性和方法,不能修饰类。
​ 2、私有属性和方法,只有类自身可访问,外部不可访问。

2、总结

​ 1、打包类时。

  • 同一包中,准确地说是包名相同的类,所有类、非私有成员能互相访问。
  • 不同包,或不同路径下的包,都只有共享类、共享成员可访问,还有子类可访问父类受保护的成员。

​ 2、在未打包的情况下,系统默认将一个文件视为一个包。

  • 同一文件中的所有类和非私有成员都可互相访问,正是包功能。
  • 不同文件中,类比为不同的包中,此时只有共享类、共享成员可互相访问,和子类可访问父类受保护的成员。
  • 不同路径下,即为不同路径下的包,情况同上。
posted @ 2021-06-17 11:26  流水自净  阅读(490)  评论(0编辑  收藏  举报