尚硅谷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的, 所以要小心.