外部类不能用 protected ,子类如何访问父类的 protected 对象

本文探讨了为何外部类不能使用`protected`修饰以及子类如何在不同包下访问父类的`protected`成员。外部类由于其作用域限制,`protected`与默认访问权限无异。子类访问`protected`成员实际上是通过自身的实例访问继承的成员,而非通过父类对象。示例代码展示了这一概念。
摘要由CSDN通过智能技术生成

关于外部类不能用 protected 修饰及子类访问不同包父类的 protected 成员 的一点思考

所谓访问权限控制符的作用,通俗点理解就是:控制它的作用域或者说控制可见范围。

简单的说就是:

private : 只有本包内可见,

默认(default): 只有同一包内可见

protected : 同一包内以及子类中可见

public : 任何地方都可见

问题:

一问:外部类为什么不能用 protected 修饰?

答:外部类的上一级程序单元是包,所以它只有 2 个作用域:同一个包内和任何位置。因此只需要
2 种访问权限:包访问权限和可公开访问权限,也正好对应了:省略访问控制符 和 public访问控制符。

省略访问控制符 是包权限,即同一包中其他类可以访问。也就是说它只在这个包内是可见的,在其他包内是不可见的。

protected 权限是除了本包,还多了子类可访问。但对于外部类来说,只要不是用 public 修饰,在其他包中都是不可见的,而在其他包中不可见也就无从说继承了。所以实际效果跟 省略访问控制符的效果是一样的,也就没必要用 protected 。

二问:子类如何访问不同包的父类的 protected 成员?

答:子类访问父类的 protected 成员实际上并不是 创建一个父类对象,然后用这个对象调用访问。而是用自己的实例对象访问自己的从父类那里继承来的
protected 的成员。

这么说有点绕,还可以这样说:子类访问的是自己的 prot

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值