尚硅谷JavaSE基础
6.6.3 四种访问权限
1. 为什么需要访问权限
有的时候, 类中的一些成员需要控制可以被哪些范围的其他类所访问, 就可以使用访问控制修饰符来控制.
2. 访问权限
四种访问权限修饰符
Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类对象成员的访问权限。
对于class的权限修饰只可以用public和default。
- public类可以在任意地方被访问。
- default类只可以被同一个包内部的类访问。
class Parent{ private int f1 = 1; int f2 = 2; protected int f3 = 3; public int f4 = 4; private void fm1() {System.out.println("in fm1() f1=" + f1);} void fm2() {System.out.println("in fm2() f2=" + f2);} protected void fm3() {System.out.println("in fm3() f3=" + f3);} public void fm4() {System.out.println("in fm4() f4=" + f4);} } class Child extends Parent{ //设父类和子类在同一个包内 private int c1 = 21; public int c2 = 22; private void cm1(){System.out.println("in cm1() c1=" + c1);} public void cm2(){System.out.println("in cm2() c2=" + c2);} public static void main(String args[]){ int i; Parent p = new Parent(); // i = p1.f1; // 不可以访问其他类的私有成员 i = p.f2;// i = p.f3; i = p.f4; p.fm2();// p.fm3(); p.fm4(); Child c = new Child(); i = c.f2; // i = c.f3; i = c.f4; i = c.c1; // i = c.c2; //c.fm1(); // 不能访问 c.cm1(); // c.cm2(); c.fm2(); c.fm3(); c.fm4() 都能访问 } } |
3. 访问权限的使用注意
protected是被保护的, 容易从字面意思理解成它的范围会比较小, 但是其实被protected修饰的成员的访问范围是仅次于public的, 所以要小心.