Ruby 类

1. Ruby要建立新的对象,必须使用每个类的new方法。
例如:

ary = Array.new
p ary # => []

与java中new Object()相通,与python不同,python 直接 a = Object()。

2. 想知道对象属于哪个类,可以使用class方法:
例如:

ary = []
str = "Hello world."
p ary.class # => Array
p str.class # => String

和python中的__class__类似

3. 要判断一个对象是否是某个类的实例,可以使用instance_of?方法
例如:

ary = []
str = "Hello world."
p ary.instance_of?(Array) # => true
p str.instance_of?(String) # => true
p ary.instance_of?(String) # => false
p str.instance_of?(Array) # => false

这同python中isinstance功能类似。

4. 检查有继承关系的父类,使用is_a?
例如:

str = "This is a String"
p str.is_a?(String) # => true
p str.is_a?(Object) # => true


5. 定义类:

class 类名 # 类名一定要以大写字母开始
类定义
end


6. initialize方法
initialize方法是一个比较特殊的方法,调用new方法建立对象时,这个initialize方法会被调用;同时,传递给new的所有实参都会传给initialize方法。
(和python的__init__方法功能类似)

7. 类实例和说明:
Ruby不允许从对象外部直接读取,写入实例变量。所有要访问对象内部的数据,都需要定义方法来操作。

class HelloWorld

def initialize(myname="Ruby")
@name = myname
end

def name
return @name # get
end

def name= (value)
@name = value # set
end

end

ruby = HelloWorld.new
p ruby.name # => "Ruby"
ruby.name = "bob"
p ruby.name # => "bob"


class HelloWorld2

def initialize(myname="Ruby2")
@name = myname
end

attr_reader:name # 相当与set属性

end

ruby2 = HelloWorld2.new
p ruby2.name # => "Ruby2"
ruby2.name = "bob2" # 8-1-class.rb:35: undefined method `name='
# for #<HelloWorld2:0xb77f9100 @name="Ruby2"> (NoMethodError)

p ruby2.name

定义访问属性:
[table]
|定义|意义|
|attr_reader:name|只定义用来读取的方法(定义name方法)|
|attr_writer:name|只定义用来写入的方法(定义name=方法)|
|attr_accessor:name|定义用来读取与写入的方法(定义上述两个方法)|
[/table]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值