java修饰符笔记:public,protected,default以及private

1、在顶级

        在顶级有两个修饰限定符,public和default(默认不写,编译器提供的)
当我的类用public修饰时,我的类对所有类都可见,如果一个类没有写修饰限定符,那么就是系统默认的defaule,仅对自己的包中的类公开。

public

类文件名必须保持一致,并且一个java文件中只能有一个public关键字声明的类。

  • 一个java文件中只能有一个时public修饰的类
  • 被public修饰的类名要与文件名一致
  • 编译后会产生一个与java文件名相应的.class文件
  • 所有类都可以访问

 default(没有显示修饰符即默认访问权限)

 一个java文件中可以同时有多个不使用public关键字声明的类,但是编译后会产生多个与之对应的.class文件,并且要执行的文件是对应的多个.class的前缀名
default的权限仅限于自己包内(包访问权限)

只能用public和default修饰类

  • 我们使用访问修饰符去修饰类,就是为了让类之间根据各种权限来访问。
  • 假如外部类使用private修饰,则不能被其它类所访问,这个类也就失去了意义。
  • 假如外部类使用protected修饰,看起来与default相比,在包内可访问的基础上,包外的子类也可访问。但包外想成为子类需要先继承父类,然而无法找到该父类实际上无法继承(先有鸡还是先有蛋的问题),效果与default一致,也就没必要存在了。
     

2、在成员级别

  • 在成员级别中,可以使用public和default(默认访问权限),当然还新增了两个访问修饰符,private和 protected.
  • private修饰的成员只可以在自己的类中访问,
  • protected修饰的成员可以在自己的包中访问,也可以被其他包中的该类的子类访问

如何选择访问级别

        如果其他程序员在使用你的类,你想要确保不会发生滥用错误,访问级别可以这么选择

  • 我们希望类要尽量做到 “封装”, 即隐藏内部实现细节, 只暴露出 必要 的信息给类的调用者.
  • 因此我们在使用的时候应该尽可能的使用 比较严格 的访问权限. 例如如果一个方法能用 private, 就尽量不要用 public.
  • 另外, 还有一种 简单粗暴 的做法: 将所有的字段设为 private, 将所有的方法设为 public. 不过这种方式属于是对访问权限的滥用。
  • 认真思考这个类是给自己使用还是给外部使用来决定它的访问权限。

你可能感兴趣的:(Java基础,java,笔记,开发语言)