java访问修饰符:
- 包访问权限(friendly):当前包中的所有类对那个成员都具有访问权限,但是对于这个包之外的所有的类,这个成员是private的。由于一个编译单元(即一个文件),只能隶属一个包,所以经由包访问权限,处于同一个编译单元中的所有类彼此之间都是可以自动访问的。
取得对某成员的访问权的唯一途径是:
1.使得该成员成为public。
2.通过不加访问权限修饰符并将其他类放置于同一包内的方式给成员赋予包访问权限。
3.继承而来的类既可以访问public成员也可以访问protected成员(但是private不可以),只有两个类都处于同一个包时,它才可以访问包访问权限的成员。
4.提供set和get方法,以读取和改变数值。
- public:接口访问权限
使用public关键字,就意味着pubic之后紧跟着的成员声明自己对于所有人都是可见的。
- private:你无法访问
除了包含该成员的类之外,其他任何的类都无法访问这个成员。由于处于同一个包中的其他类是不可以访问private成员的,因此这等于说是自己隔离了自己。
- protected:继承访问权限
把对它的访问权限赋予了它的派生类而不是所有类。
总结:
1.访问权限修饰符修饰成员变量和方法
1)public:表明该成员变量和方法是共有的,能在任何情况下被访问。
2)protected:必须在同一包中才能被访问。
3)friendly:在一个包中或者子类中才能被访问。
4)private: 只能在本类中访问。
实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
2.访问权限修饰符修饰类
1)不能用protected和private修饰类。
2)用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。
3.访问权限修饰符与继承
这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
1)子类与父类在同一包中:此时只有声明为private的变量与方法不能被继承(访问)。
2)子类与父类不在同一包中
此时private与friendly均不能被继承(访问),protected与public可以。
所以,访问权限修饰符权限从高到低排列是public, protected, friendly, private。
java访问权限修饰符(特殊情况除外)
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly