Java访问修饰符:public, protected, (default), private.
- public: public 表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用;
- protected: protected对于子女(子类)、朋友(同一个包下的类)来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
- default: 在定义成员变量时,不用default去修饰成员变量,即是说,如果没有修饰符Java就将它默认为default的访问权限,如int age。如果加了default去修饰成员变量则编译时会报错。
- private: private 表示私有,私有的意思是除了class自己之外,任何人都不可以直接使用,私有财产不可侵犯,即便是子女(子类),朋友(同一个包下的类) 都不可以使用。
- 用隐私程度来表示各种修饰符的权限:private > default > protected > public;
- 按照上表所示,default型的成员变量是不能够在子类中被访问的。其实不然,这里缺少了一个限制条件,那就是子类和父类不在同一个包中时,default型的成员变量是不能在子类中被访问的。即如果子类和父类在一个包中,父类中的default型的成员变量是能够被子类访问的。因为在同一包下,子类也是一种类,会被视为同一包中的类。
如何获取private修饰的变量?
- private通过反射获取,可以设置setAccessable为true实现。