java 访问修饰符详解
java 访问修饰符有 public、 protected、默认(default)、private
本类 | 同包 | 子类 | 不同包 | |
public | y | y | y | y |
protected | y | y | y | n |
默认 | y | y | n | n |
private | y | n | n | n |
以下进行测试后的总结:
存在一下代码:(以下类都public类型的)
package1包,:有a类,b类(继承a类),test1类
package2包 :有c类(继承a类)、d类(继承b类),test2类
public: 在本类、同包、子类、不同包都可调用public属性、方法
private: 只有在本类可调用private属性、方法
默认(default) : 本类、同包类、同包中的子类可调用default属性、方法
同包类中的子类-------例子如下:
testl1类可以调用a类的default属性、方法
b类可以调用a类的default属性、方法-----------虽说子类不能调用,但是在同包时可以调
c类不可以调用a类的default属性、方法-----------和上一个情况不一样,c类处于不同包
d类不可以调用a、b类的default属性、方法-----------同理:d类处于不同包
default总结: 就算是子类也要看是否同包,看是否同包,即:在开始调用的类和被调用的类是否属于同包
protected: 本类、同包、子类
testl1类可以调用a类的protected属性、方法
子类可以存在同包和不同包,以下讨论:
同包的子类:
在b类调用a类的protected属性、方法-----------b属于a类子类
在test1类中可以通过b类调用a类的protected属性、方法-----------test1与a类属于同一个包中
不同包的子类
在d类调用a、b类的protected属性、方法-----------d属于a类子子类
在test1类中可以通过d类调用a、b类的protected属性、方法,而不能调用d类的protected属性、方法-----------test1与a、b类属于同一个包中; test1类和d类属于不同包
在test2类中不可以通过d类调用a、b类的protected属性、方法,而能调用d类的protected属性、方法-----------test2与a、b类属于不同包中; test2类和d类属于同包
protected总结: 就算是子类也要看是否同包,看是否同包,即:在开始调用的类和被调用的类是否属于同包
posted on 2021-12-14 15:34 dong瓜(TreeSky) 阅读(99) 评论(0) 编辑 收藏 举报