再论子类父类不同包之间访问关系
来源:互联网 发布:郭德纲 知乎 编辑:程序博客网 时间:2024/05/06 10:19
当A继承B,但是A和B位于不同的包的时候,A对B中的protected数据成员的访问会有一些限制:
我们知道在java和C#中,对于protected成员只有在同一个包或是子类才能访问protected数据。
上次我遇到了一种情况那就是:在子类中可以通过super.method或super.variable方式访问,而不能以
new Father().method或.variable的形式去调用,采用后者的话,编译器会提示出错,说只有在包内才能访问protected属性的成员。今天受一个同学的启发可以很好的解释这种现象了:protected成员只能在包内访问所以不能在包外访问,或只能是子类访问。我们可以想想假若采用new Father()来调用protected成员,这其实本质上是通过产生一个对象去访问父类的成员,这里并没有体现出继承访问的关系,就相当于在包外面去访问该包内类的成员,显然这是违背了protected访问规则,而采用super方式的话,这很好的体现了我是子类,所以我要访问父类中的protected成员,请允许我进去。super很好的反映了这种继承的关系。
对于编译器的具体实现来说,我感觉,如果我们采用new产生父类对象的方式来访问的话,该父类对象所申请的内存空间,脱离了产生父类对象的子类的内存空间,因而不能访问,但是采用super的方式的话,因为从子类对象的构造那时候就产生了父类对象,构造子类对象的父类对象他们应该是位于同一个内存空间的,也就是具有相同的访问权限。大家有更好的解释的请留言
- 再论子类父类不同包之间访问关系
- JAVA——编译运行含有包层的类、同包和不同包类的相互访问、不同包子类和父类的访问权限
- Java中子类和父类之间的调用关系
- 深入理解子类和父类之间关系
- 【Java中子类和父类之间的调用关系】
- 深入理解子类和父类之间关系
- 深入理解子类和父类之间关系
- 讨论子类和父类之间的关系
- 关于子类和父类之间的方法调用关系
- Java 类 子类父类访问权限关系
- Java 包与包之间的访问 (类在不同包里)
- 超类与子类之间的关系
- Java 子类父类关系
- 16. 子类父类关系
- cocos2d-x中的父类和子类之间的继承关系
- 关于java接口、父类子类之间调用和强制转换的关系
- 不同包中子类不能直接使用父类默认权限的属性
- 通过父类访问子类
- 如何给对话框添加音乐播放器空间
- 关于java中的properties类
- 设备分类
- 数据结构---->串的模式匹配算法
- 在Android模拟器中使用虚拟SD卡设备
- 再论子类父类不同包之间访问关系
- Windows下实现TCP通信
- 星号图
- 信号量与优先级翻转的分析
- ViewController的生命周期分析和使用
- 如何实现拖动文件
- git repo使用心得
- jQuery 中文文档
- 享受方便的邮件服务,Exchange与Lync的集成—UM篇