Java访问控制符

Java访问控制符

Java访问控制符修饰的对象可以分为两类:class和member(包括method和field)

一. 修饰class

  • public:该类对所有类可见。
  • default(不加修饰符):该类对同一个包下的类可见。

对于class不存在private 和 protected 修饰。

二. 修饰member

  • public和defalut的作用和class相同
  • private:仅自己这个类可以访问。
  • protected:同包下的类和不同包下的子类可以访问。

需要注意的是protected修饰的成员,对于不同包下的子类来说,只能访问它自身继承的protected成员。举例来说:Object超类中有clone方法,该方法是protected的,所有类都是Object类的子类,但是任何一个类,比如A类,他只能访问A.clone(),而不能访问其他类的clone(),比如在A类中调用Object.clone()是不被允许的。

第二点需要注意的是,访问控制只存在于编译阶段,字节码文件中不存在与访问控制相关的信息。这也是为什么可以通过运行时的访问机制来访问private字段的原因。

posted @ 2022-11-24 21:18  sjwsjwsjwsjw1234  阅读(82)  评论(0)    收藏  举报