Java 权限修饰符(带测试)
@author:Jingdai
@date:2020.09.04
类的权限
类的权限修饰符有两个:public/default
- public:全部可见
- default:包内的所有类可见
方法、属性的权限
方法、属性的权限修饰符有public、protected、default和private。
- public: 全部可见
- protected:包内的类可见、其它包内的子类可见
- default:包内的类可见
- private:本类可见
实测protected
在理解
protected
的时候有点问题,于是今天测试了一下,帮助理解。先说结论:在继承的时候,如果子类没有重写protected
的方法,则只有父类同包的类才能调用子类的protected
的方法。
第一次(测试类和子类在同一个包)
包结构图:
代码:
Parent.java
package com; import cn.*; public class Parent{ protected void fun(){ System.out.println("OK"); } }
Child.java
package cn; import com.*; public class Child extends Parent{ }
Test.java
package cn; import com.*; public class Test { public static void main (String[] args) { Child c = new Child(); c.fun(); } }
结果:
不能访问,编译报错。
第二次(测试类和父类在同一个包)
包结构图:
代码:
Parent.java
package cn; import com.*; public class Parent{ protected void fun(){ System.out.println("OK"); } }
Child.java
package com; import cn.*; public class Child extends Parent{ }
Test.java
package cn; import com.*; public class Test { public static void main (String[] args) { Child c = new Child(); c.fun(); } }
结果:
运行成功,可以访问。