Ruby 教程 目录

Ruby 继承

继承是面向对象编程中的一个核心概念。在Ruby中,继承允许一个类(子类)从另一个类(父类)那里继承属性和方法。这种机制使得代码重用变得更加容易,并且可以提高程序的模块化程度。

父类与子类的定义

在Ruby中,我们可以通过在类定义后面加上冒号和父类的名字来创建一个子类。例如,如果我们有一个名为Vehicle的父类,我们可以定义一个名为Car的子类,如下所示:

-- -------------------- ---- -------
----- -------
  --- ---------------- ------
    ----- - ----
    ------ - -----
  ---

  --- -----
    ---- --------- --------- --------
  ---
---

----- --- - -------
---

在这个例子中,Car类继承了Vehicle类的所有方法和属性。这意味着Car类的对象可以直接使用start方法。

覆写方法

子类可以覆写父类的方法,以便提供特定于子类的行为。这被称为方法覆写或方法重写。在Ruby中,这只需要重新定义同名方法即可。例如:

在这个例子中,Car类覆写了Vehicle类的start方法,添加了一些额外的行为。

使用super调用父类方法

当子类覆写了一个父类的方法时,如果仍然需要调用父类的方法,可以使用super关键字。这使得我们可以扩展父类的功能而不是完全替换它。例如:

在这个例子中,Truck类的start方法首先调用了Vehicle类的start方法,然后添加了自己的行为。

多层次继承

Ruby支持多层次的继承。这意味着一个类可以继承自另一个类,而后者又可以继承自第三个类。例如:

在这个例子中,SportsCar类继承了Car类,而Car类又继承了Vehicle类。因此,SportsCar类继承了Vehicle类的所有特性。

利用继承实现代码复用

通过合理地设计类之间的继承关系,可以极大地提高代码的复用性。例如,我们可以为不同的车辆类型创建不同的子类,同时利用继承来共享通用的属性和方法。这样不仅使代码更加简洁,而且易于维护和扩展。

实例:多级继承中的方法调用

让我们看看一个更复杂的例子,其中涉及多级继承以及如何正确调用不同级别的方法:

-- -------------------- ---- -------
----- -------
  --- ---------------- ------
    ----- - ----
    ------ - -----
  ---

  --- -----
    ---- --------- --------- -- ----------
  ---
---

----- --- - -------
  --- -----
    -----
    ---- ---- ----- ------ -- ---------
  ---
---

----- ----------- - ---
  --- -----
    -----
    ---- --------- --- -- ----- -- ----
  ---
---

------------ - ------------------------ ------ ---
------------------

在这个例子中,当我们创建一个ElectricCar对象并调用其start方法时,会按照以下顺序调用方法:

  1. ElectricCar类的start方法。
  2. super调用Car类的start方法。
  3. Car类的start方法再次调用super,进而调用Vehicle类的start方法。
  4. 最终输出结果包含了所有三个级别的信息。

通过这种方式,我们可以确保即使在多层次继承的情况下,每个级别的功能都能得到适当的执行,同时还能保持代码的清晰和可维护性。

上一篇: Ruby 访问控制
纠错
反馈