Java的权限修饰符

Java中的权限修饰符分为4种:public,protected, default(默认),private
在项目中protected和default用的比较少,容易混淆
现在对比分析一下
public:公共的,被随便访问,没有限制
protected:受保护的,只能被自己,自己的子类,同一个包下的类访问
default:默认的,只能被自己,同一个包下的类访问
private:私有的,只能被自己访问


permission.jpg

有趣的问题(看代码):
实体bean

package com.example.java8.model.son1;
public class Father {
    protected void print(){
    }
}

package com.example.java8.model.son1;
public class Son1 extends Father {
}

package com.example.java8.model.son2;
import com.example.java8.model.son1.Father;
public class Son2 extends Father {
}

测试

package com.example.java8.model.son1;
import com.example.java8.model.son2.Son2;
public class Son1Test {
    public void test(){
        Son1 son1 = new Son1();
        son1.print();

        Son2 son2 = new Son2();
        son2.print();
    }
}

package com.example.java8.model.son2;
import com.example.java8.model.son1.Son1;
public class Son2Test {
    public void test(){
        Son1 son1 = new Son1();
        son1.print();  // 编译报错

        Son2 son2 = new Son2();
        son2.print(); // 编译报错
    }
}

包结构图:


error.jpg

总结:当子类使用父类用protected修饰的方法时,如果代码不和父类同一个文件夹的话,会导致使用不了。

你可能感兴趣的:(Java的权限修饰符)