访问控制符用来判断其他类是否可以使用特定的字段或者方法,有两个层面的访问控制符:

  • 类级别-public和包级别的(包级别是包私有的,package-private,是默认的,不用指定)
  • 成员级别-public、protected、default(package-private,是默认的,不用指定)、private

其中,protected只能被本包和其他包中的子类访问。

注意:对于父类中的protected成员,子类可以继承到父类的该成员,而不是可以调用父类对象的该成员

package c2;

public class Class2 {

   protected String t1;
}

  

package c1;

import c2.Class2;

public class Class1 extends Class2 {

    public static void main(String[] args) {
        Class2 c2 = new Class2();
        Class1 c1 = new Class1();
        System.out.println(c2.t1); // 错误,'t1' has protected access in 'c2.Class2'
        System.out.println(c1.t1);
    }
}

  

  

控制符 private default protected public
class
package ×
subclass × ×
world × × ×

访问控制符在两方面产生影响:

  • 访问控制符决定了外部类中的哪些成员可以访问
  • 当你写一个类时,你需要考虑和规划每个成员的访问范围

访问控制符只是在编辑的层面进行控制,而无法在运行时控制,例如可以通过反射来获取、改变任何修饰符修饰的成员。

 

 

引用自:https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

2018-06-12

posted on 2018-06-13 00:01  aiyaa  阅读(102)  评论(0)    收藏  举报