Java 中的访问控制、抽象类与引用类型转换
1. 访问控制与继承
在 Java 里,子类继承父类可访问的实例字段和实例方法。具体规则如下:
- 若子类与父类在同一包中,子类继承所有非私有实例字段和方法。
- 若子类与父类不在同一包中,子类继承所有受保护和公共的实例字段和方法。
- 私有字段和方法、类字段和类方法不会被继承。
- 构造函数不被继承,而是通过链式调用实现。
虽然子类不继承父类不可访问的字段和方法,但子类的每个实例都包含父类的完整实例,包括所有私有字段和方法。创建子类实例时,会为父类定义的所有私有字段分配内存,但子类无法直接访问这些字段。
为了明确概念,我们将“继承的成员”定义为可访问的父类成员。正确的成员可访问性表述是:“所有继承的成员和本类中定义的所有成员都是可访问的”。
1.1 成员访问总结
成员访问规则总结如下表:
| 成员可见性 | 定义类 | 同一包中的类 | 不同包中的子类 | 不同包中的非子类 |
| — | — | — | — | — |
| 公共(Public) | 是 | 是 | 是 | 是 |
| 受保护(Protected) | 是 | 是 | 是 | 否 |
| 默认(Default) | 是 | 是 | 否 | 否 |
| 私有(Private) | 是 | 否 | 否 | 否 |
1.2 可见性修饰符使用规则
- 公共(Public) :仅用于构成类公共 API 的方法和常量。公共字段仅适用于常量或不可变
超级会员免费看
订阅专栏 解锁全文
170万+

被折叠的 条评论
为什么被折叠?



