Java 类设计:访问修饰符、继承与多态详解
1. 受保护和默认访问修饰符
受保护( protected
)和默认访问修饰符有相似之处。若成员方法或字段被声明为受保护或默认访问,那么该方法或字段可在包内被访问。需要注意的是,默认访问没有显式的关键字,当未指定访问修饰符时,成员即为默认访问,默认访问也被称为包保护访问。这类似于办公室里一个会议室仅对一个部门开放。
二者的显著区别在于,当子类与其超类不在同一个包中时,受保护成员在子类中可访问,而默认成员则不可访问。此外,类(或接口)不能声明为私有或受保护,接口的成员方法或字段也不能声明为私有或受保护。
不同访问修饰符的可见性总结如下表:
| 访问修饰符/可访问性 | 同一个类内 | 包内子类 | 包外子类 | 包内其他类 | 包外其他类 |
| — | — | — | — | — | — |
| 公共( public
) | 是 | 是 | 是 | 是 | 是 |
| 私有( private
) | 是 | 否 | 否 | 否 | 否 |
| 受保护( protected
) | 是 | 是 | 是 | 是 | 否 |
| 默认 | 是 | 是 | 否 | 是 | 否 |
2. 继承
继承是面向对象编程中的一种可重用机制。通过继承,可利用各种对象的共同属性来形成它们之间的关系。抽象和共同的属性在超类中提供,更具体的子类可以使用这些属性。例如,彩色打印机和黑白打印机都属于打印机(单继承),一体机既是打印机、扫描仪,也