面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。Ruby 是一种纯粹的面向对象的语言,几乎所有的操作都是通过对象进行的。在这一章中,我们将深入探讨 Ruby 的面向对象编程特性。
类与实例
定义类
在 Ruby 中,类是创建对象的蓝图或模板。类定义了对象的属性和行为。你可以使用 class
关键字来定义一个类:
class Person end
创建实例
一旦定义了一个类,就可以通过 new
方法创建该类的对象(也称为实例)。每个实例都有自己的属性和方法。
person = Person.new
属性
在 Ruby 中,属性可以通过实例变量(以 @
开头)来表示。虽然可以直接访问这些实例变量,但通常推荐使用 getter 和 setter 方法来访问和修改它们。
-- -------------------- ---- ------- ----- ------ --- ---------------- ----- - ---- --- --- ---- ----- --- --- ------------ ----- - ----- --- --- ------ - ------------------- ---- ----------- - -- ------- ----------- - ----- ---- ----------- - -- -----
私有方法
在 Ruby 中,可以将某些方法标记为私有的,这意味着这些方法只能被同一个类中的其他方法调用。这可以通过 private
关键字来实现:
-- -------------------- ---- ------- ----- ------ --- ---------------- ----- - ---- --- --- ----- --------- --- ------- --- --------- ---- ------- ---------- --- --- ------ - ------------------- ------------ - -- ------- ------- - ---------------- - --------- --------- ----
继承
继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于代码重用和组织结构。
定义父类和子类
-- -------------------- ---- ------- ----- ------ --- ----- ----- ------ --- --- ----- --- - ------ --- ----- ------- --- --- ----- --- - ------ --- ----- ------- --- ---
覆盖和方法调用
子类可以覆盖父类的方法,或者通过 super
关键字调用父类的方法。
-- -------------------- ---- ------- ----- ------ --- ----- ----- ------ --- --- ----- --- - ------ --- ----- ----- - -- ------ --- --- --- - ------- ---- --------- - -- ----- ------ ------
多态
多态是指不同类的对象对同一消息做出响应的能力。Ruby 支持多态,因为它允许你使用相同的接口调用不同对象的方法。
-- -------------------- ---- ------- ----- ------ --- ----- ----- ------ --- --- ----- --- - ------ --- ----- ------- --- --- ----- --- - ------ --- ----- ------- --- --- --- -------------------- ------------ --- ---- --------------------- - -- ------- ---- --------------------- - -- -------
模块与混合
模块是用于命名空间和混入功能的一种方式。模块不能实例化,但可以包括方法、常量和类。模块的一个重要用途是作为混入(mixin)来共享功能。
定义和使用模块
-- -------------------- ---- ------- ------ -------- --- ---- ---- -------- -- --------- --- --- ----- ------ ------- -------- ------------- ----- --- ---------------- ----- - ---- --- --- ---- ----- --- --- ------ - ------------------- ----------- - -- ------ -- ---------
命名空间
模块也可以用来创建命名空间,防止名称冲突。
module MyModule class MyClass end end obj = MyModule::MyClass.new
小结
本章介绍了 Ruby 中面向对象编程的核心概念,包括类与实例、继承、多态以及模块与混合。这些基础知识将帮助你在实际项目中有效地使用 Ruby 的面向对象特性。下一章我们将继续探讨 Ruby 的其他高级特性。