Ruby 教程 之 Ruby 面向对象 1

简介: Ruby 面向对象

Ruby 教程 之 Ruby 面向对象 1

Ruby 面向对象

Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现。Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串、数字,甚至连 true 和 false 都是对象。类本身也是一个对象,是 Class 类的一个实例。本章将向您讲解所有与 Ruby 面向对象相关的主要功能。

类用于指定对象的形式,它结合了数据表示法和方法,把数据整理成一个整齐的包。类中的数据和方法被称为类的成员。

Ruby 类定义
当您定义一个类时,您实际是定义了一个数据类型的蓝图。这实际上并没有定义任何的数据,而是定义了类的名称意味着什么,也就是说,定义了类的对象将由什么组成,以及在该对象上能执行什么操作。

类定义以关键字 class 开始,后跟类名称,最后以一个 end 进行分隔表示终止该类定义。例如,我们使用关键字 class 来定义 Box 类,如下所示:

class Box
code
end
按照惯例,名称必须以大写字母开头,如果包含多个单词,每个单词首字母大写,但此间没有分隔符(例如:CamelCase)。

定义 Ruby 对象
类提供了对象的蓝图,所以基本上,对象是根据类进行创建的。我们使用 new 关键字声明类的对象。下面的语句声明了类 Box 的两个对象:

box1 = Box.new
box2 = Box.new
initialize 方法
initialize 方法是一个标准的 Ruby 类方法,是类的构造函数,与其他面向对象编程语言中的 constructor 工作原理类似。当您想要在创建对象的同时初始化一些类变量,initialize 方法就派上用场了。该方法带有一系列参数,与其他 Ruby 方法一样,使用该方法时,必须在前面放置 def 关键字,如下所示:

class Box
def initialize(w,h)
@width, @height = w, h
end
end

实例变量
实例变量是类属性,它们在使用类创建对象时就变成对象的属性。每个对象的属性是单独赋值的,和其他对象之间不共享值。在类的内部,是使用 @ 运算符访问这些属性,在类的外部,则是使用称为访问器方法的公共方法进行访问。下面我们以上面定义的类 Box 为实例,把 @width 和 @height 作为类 Box 的实例变量。

class Box
def initialize(w,h)

  # 给实例变量赋值
  @width, @height = w, h

end
end

目录
相关文章
|
10月前
|
虚拟化
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
VMware Workstation Pro 是一款强大的虚拟化工具,本文简要介绍其基本配置与操作。安装后,用户可以通过“编辑菜单 > 首选项”设置虚拟机保存路径、是否显示托盘图标等全局配置。新建虚拟机时,需选择操作系统类型、配置处理器、内存、网络和硬盘等参数。建议根据主机硬件性能合理分配资源,避免过度占用。创建完成后,用户可加载 ISO 镜像文件安装所需操作系统。通过这些步骤,您可以轻松搭建并管理多个虚拟环境。
2398 8
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
WK
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
706 1
|
弹性计算 网络协议 安全
如何使用阿里云虚拟主机和域名设置网站?
如何使用阿里云虚拟主机和域名设置网站?
|
小程序 前端开发 API
🍁商城类小程序实战(一):需求分析及开发前准备
🍁商城类小程序实战(一):需求分析及开发前准备
1656 2
🍁商城类小程序实战(一):需求分析及开发前准备
|
消息中间件 存储 负载均衡
中间件注册与订阅
【7月更文挑战第1天】
293 2
大尺度信道建模 | 带你读《大规模天线波束赋形技术原理与设计 》之二十四
本节将介绍 3D 信道模型中 不同传输场景的大尺度衰落模型,包括路损计算、穿透损耗、直射径概率、阴 影衰落等。
大尺度信道建模  | 带你读《大规模天线波束赋形技术原理与设计 》之二十四
|
Java 调度
搞清楚wait、sleep、join、yield四者区别,面试官直接被征服!
掌握上述多线程控制方法的运用,可以在Java多线程程序编写中进行更加深入的线程管理,确保程序运行更加高效、稳定。在面试中准确并熟练地讲解这些概念,确实有可能让面试官对你的专业能力留下深刻印象。
339 0
|
Ubuntu Oracle 关系型数据库
Linux操作系统最著名的两大系列Red Hat和Debian
Linux操作系统最著名的两大系列Red Hat和Debian
|
存储 Kubernetes 负载均衡
K8S是干什么的?底层原理是什么?
K8S是干什么的?底层原理是什么?
1476 0
|
传感器 机器学习/深度学习 算法
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建(1)
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
551 0