携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情
继承
继承是所有 OOP 语言和 Java 语言不可缺少的组成部分。
继承是 Java 面向对象编程技术的一块基石,是面向对象的三大特征之一,也是实现软件复用的重要手段,继承可以理解为一个对象从另一个对象获取属性的过程。
如果类 A 是类 B 的父类,而类 B 是类 C 的父类,我们也称类 C 是 A 的子类,类 C 是从类 A 继承而来的。在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。
继承中最常使用的两个关键字是 extends 和 implements 。
这两个关键字的使用决定了一个对象和另一个对象是否是 IS-A (是一个)关系。
通过使用这两个关键字,我们能实现一个对象获取另一个对象的属性。
所有 Java 的类均是由 java.lang.Object 类继承而来的,所以 Object 是所有类的祖先类,而除了 Object 外,所有类必须有一个父类。
使用继承是否能够获取父类的一切内容呢?不是,以下是两种特殊的情况。
-
子类无法继承父类的构造方法, 构造方法是一种特殊的方法,子类无法继承父类的构造方法。
-
子类不能继承父类中不符合访问权限的成员。
我们知道,private 修饰的成员仅对当前类可见,而继承是子类继承父类的成员,显然子类和父类是不同的类,因此子类无法继承父类中用 private 修饰的成员。同理,子类也无法继承父类中不满足 protected 或默认访问权限修饰的成员。如果将父类 Vehicle 中的 name 属性用 private 修饰,并用子类继承此属性,那么编译时就会报错。