Single Inheritance in Java

2025 年 7 月 7 日 | 阅读 4 分钟

在 Java 中,继承允许一个类采用另一个类的行为和功能。从类中继承功能和行为的类称为基类父类超类。接收类通常称为子类派生类

要阅读更多内容,请访问 Java 继承

它建立了一个明确的层次结构,并使用父类的属性和函数。通过继承可以表示“IS-A”关系,有时也称为父子关系。

单继承

在单继承中,派生从单个父类或基类继承所有方法和属性。Java 提供了一个名为 extends 的关键字,用于继承类的属性和方法。让我们通过一张图来理解它。

Single Inheritance in Java

在上图中,子类 B 从单个父类 A 继承了所有属性和方法。

语法

单继承示例

示例

编译并运行

输出

 
barking...
eating...   

单继承的优缺点

优点

  • 单继承有助于维护清晰的层次结构。因此,它便于理解和管理代码。
  • 通过继承父类的属性和方法,子类避免了编写重复代码。因此,它防止了开发时间的低效率并避免了代码
  • 子类可以直接使用父类的字段和方法。因此,它可以帮助您更快、更轻松地编写重复代码。
  • 子类可以在可继承的属性中添加其特殊的属性和方法。因此,它可以提供更高程度的 抽象

缺点

  • 一个类只能继承一个父类。这限制了创建复杂链接或行为的可能性。
  • 并非所有代码都可以轻松地归入单一继承层次结构。这可能会降低有效代码重用的机会。
  • 如果继承的方法名称相同但执行的操作不同,则可能导致程序中的歧义或意外行为。

Java 单继承的实际应用

  • 银行系统: `BankAccount` 类是 `SavingsAccount` 类可以继承的类。它利用了标准的银行功能。
  • 在线购物平台: `Customer` 类可以扩展 `User` 类。这是因为 `Customer` 类继承了管理配置文件和登录的功能。
  • 教育系统: `Person` 类可以继承给 `Student` 类。因此,它可以包含学生特定的信息,如成绩和课程。
  • 车辆管理: `Car` 类可以通过扩展 `Vehicle` 类来重用 `Start()` 和 `stop()` 方法。
  • 家电控制: `Appliance` 类可以将电源控制功能继承给 `WashingMachine` 类。

单继承选择题

1. 下列哪项最能描述 Java 中的单继承?

  1. 一个类可以继承自多个类。
  2. 一个类只能继承自一个超类。
  3. 一个类不能继承自任何类。
  4. 一个类只能继承自接口。
 

答案:B

解释: Java 中的单继承是指一个类一次只能扩展一个直接超类的能力。除了避免多重继承问题(如菱形问题)的复杂性之外,这还有助于 Java 维护一个简单且无歧义的层次结构。


2. 在 Java 中,哪个关键字用于实现单继承?

  1. implements
  2. super
  3. extends
  4. inherit
 

答案:C

解释: Java 中的子类可以使用 `extends` 关键字从单个超类继承属性和行为。通过单继承,派生类可以重用其父类的代码,这是基于此的。


3. 关于单继承中的方法访问,以下哪个说法是正确的?

  1. 超类的私有方法会直接继承。
  2. 超类的受保护和公共方法在子类中是可访问的。
  3. 静态方法无法访问。
  4. 子类不能重写超类的方法。
 

答案:B

解释: 子类可以通过单继承访问其超类的公共和受保护成员。虽然私有成员无法直接访问,但可以通过受保护或公共的 getter 来访问。


4. 在单继承中,继承了什么?

  1. 仅构造函数
  2. 仅静态方法
  3. 非私有字段和方法
  4. 仅 final 方法
 

答案:C

解释: 子类继承其超类中所有可访问的(非私有的)字段和方法。


5. 下列关于单继承的说法,哪项不正确?

  1. 它促进代码重用
  2. 它允许一个类继承自多个类
  3. 它支持方法重写
  4. 它有助于层次化类设计
 

答案:B

解释: Java 不允许一个类继承自多个类——只能使用接口来实现多重继承。