有关protected修饰符的访问权限

        如果希望超类中的方法和属性能够被子类访问那么可以使用protected修饰符,但需要谨慎使用protected属性,它违背了数据封装原则(子类能访问父类的protected域),而protected修饰的方法是更具有实际意义的,比如Object的clone方法

        protected可见性为:包可见以及子类可见

首先来解释一下什么是 包可见

        创建一个 在test1包下的类Test1,其中有两个被protected修饰的String类型的属性,其中一个是静态的

        在test1包下创建另一个类 Test3,在该类中创建Test1对象,发现不论是否经过static的修饰,变量string 和string1 在Test3类中都能够访问到。

 

        显然,同包下即使两个类不具有继承关系,一个类也可以访问另一个类对象的protect属性

        那么对于不同包下的子类是一个什么情况

此时在test2包下创建一个类Test2,该类继承了Test1,创建类Test2对象test2和类Test1对象test1

以下例子很明显看出:在不同包下的子类,无法通过父类对象访问父类对象的protected

原因:子类只是继承其父类的所有公共和受保护成员,意思可简单理解为子类拥有父类的protect修饰的属性

另外要注意的是:如果父类中被protected修饰的属性同时被static关键字修饰,那么我们是可以在不同包下的子类通过 父类名.属性名的方式去访问该属性。而不同包下的非子类却不能够访问。

protected属性给予同包下的权限实在是太大了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值