Ruby 教程 之 Ruby 面向对象 11

简介: Ruby 面向对象

Ruby 教程 之 Ruby 面向对象 11

Ruby 面向对象

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

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

冻结对象

有时候,我们想要防止对象被改变。在 Object 中,freeze 方法可实现这点,它能有效地把一个对象变成一个常量。任何对象都可以通过调用 Object.freeze 进行冻结。冻结对象不能被修改,也就是说,您不能改变它的实例变量。

您可以使用 Object.frozen? 方法检查一个给定的对象是否已经被冻结。如果对象已被冻结,该方法将返回 true,否则返回一个 false 值。下面的实例解释了这个概念:

实例

!/usr/bin/ruby -w

定义类

class Box

构造器方法

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

访问器方法

def getWidth
@width
end
def getHeight
@height
end

设置器方法

def setWidth=(value)
@width = value
end
def setHeight=(value)
@height = value
end
end

创建对象

box = Box.new(10, 20)

让我们冻结该对象

box.freeze
if( box.frozen? )
puts "Box object is frozen object"
else
puts "Box object is normal object"
end

现在尝试使用设置器方法

box.setWidth = 30
box.setHeight = 50

使用访问器方法

x = box.getWidth()
y = box.getHeight()

puts "Width of the box is : #{x}"
puts "Height of the box is : #{y}"

尝试一下 »
当上面的代码执行时,它会产生以下结果:

Box object is frozen object
test.rb:20:in `setWidth=': can't modify frozen object (TypeError)
from test.rb:39

目录
相关文章
|
机器学习/深度学习 算法 计算机视觉
YOLO涨点Trick | 超越CIOU/SIOU,Wise-IOU让Yolov7再涨1.5个点!
YOLO涨点Trick | 超越CIOU/SIOU,Wise-IOU让Yolov7再涨1.5个点!
5417 1
YOLO涨点Trick | 超越CIOU/SIOU,Wise-IOU让Yolov7再涨1.5个点!
|
算法 调度
操作系统作业调度算法C代码实现
操作系统作业调度算法C代码实现
505 0
操作系统作业调度算法C代码实现
|
机器学习/深度学习 存储 编解码
|
Java 开发者
Java工程师必知词汇:抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
|
Ubuntu Linux 数据安全/隐私保护
|
机器学习/深度学习 算法 搜索推荐
二分查找排序
static final int N=15; static void quickSort(int[] arr,int left,int right) //快速排序算法 { int f,t; int rtemp,ltemp; ltemp=left; rtemp=right; f=arr[(left+right)/2]; //确定
1213 0
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。