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修饰的方法时,如果代码不和父类同一个文件夹的话,会导致使用不了。
网友评论