访问控制权限—Java如何在代码体现面向对象和多态(3)
一、访问控制权限
(1)访问控制权限都有哪些?
private | 私有 |
public | 公开 |
默认 | |
protected | 受保护 |
(2)以上4个访问控制权限的,控制范围是什么?
访问修饰符 |
本类 |
同包 |
子类 |
任意位置 |
Public |
可以 |
可以 |
可以 |
可以 |
Protected |
可以 |
可以 |
可以 |
不行 |
默认 |
可以 |
可以 |
不行 |
不行 |
Private |
可以 |
不行 |
不行 |
不行 |
(3)测试
(a)首先我先建立了一个包
(b)在这个包中我定义了一个类,并且给他四个不同类型的访问权限
(c)在Test类中,我分别去访问这四个属性
结果,我发现只有被private修饰的id会报错,所以private 只能在本类中访问,即使是同包也不能访问。
(5)之后,我又在lftgb这个包下面建立了一个类Test2
(6)继续访问UserTest
结果我发现只有被public修饰的name没有被报红,被protected/默认修饰的age、sex都报红了。
(7)我再测试用Test2去测试UserTest
用子类去访问age就可以了,但是这时候我遇到了一个问题,如果我用父类去访问自己的protected行不?
这种情况下,是不行的。
二、访问控制权限可以修饰什么?
属性 | 4个都可以 |
方法 | 4个都能用 |
类 | public和默认能用,其他不行 |
接口 | public和默认能用,其他不行 |
三、总结
private只可以修饰本类的,proctected和默认可以修饰同包的,其实protected也可以修饰不同包子类的,public都可以。