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

目录
相关文章
|
3月前
|
Ruby
|
3月前
|
程序员 Ruby
|
3月前
|
Ruby
|
3月前
|
数据安全/隐私保护 Ruby
|
3月前
|
Ruby
|
4月前
|
Ruby
Ruby 教程 之 Ruby 方法 2
Ruby return 语句
29 0
|
4月前
|
Ruby
|
3月前
|
Ruby
|
3月前
|
程序员 Ruby
|
4月前
|
Ruby