1.属性的读写控制
class Mandef initialize(name,sex)@name = name@age = 16@sex = sexend# 只读def get_namereturn @nameend# 只写def set_age(age)@age = ageend# 读写def get_sexreturn @sexenddef set_sex(sex)@sex = sexendendt = Man.new("Jim","male");puts t.get_nameputs t.get_sext.set_sex("man")puts t.get_sext.set_age(22)
通过方法来实现属性的控制
2.还有一种简略的写法
class Mandef initialize(name,sex)@name = name@age = 16@sex = sexend# 只读def name@nameend# 只写def age=(age)#这里等号不能有空格@age = ageend# 读写def sex@sexenddef sex=(sex)@sex = sexendendt = Man.new("Jim","male")puts t.nameputs t.sext.sex = "man"puts t.sext.age = 22puts t.age
结果:
Jimmaleman因为age是只写的所以不能读取3.垃圾收集
Ruby实现了自动的内存管理,实现了垃圾收集。垃圾收集器使用,有三点需要说明。(1)收集无用的对象内存空间,避免内存泄漏和程序因内存不断膨胀而崩溃。(2)判断一个对象的内存空间是否能被清空的标准是,该对象不再被程序中任何一个地方所引用。(3)垃圾收集器线程定时轮询,在系统的内存过低时会启动释放内存。GC类中的start方法来实现垃圾收集功能。4.异常处理
(1)基本结构 Ruby使用begin...rescue...end结构来处理异常。类似于try...catch...finally。案例:s = 1begins = 1/0puts srescueputs "error!"end
结果:error!因为有错误捕捉到。
(2)重试语句
在捕捉到错误之后,可以通过retry语句重新执行begin块中的内容。案例:s = 1begins = 1/0puts srescueputs "error!"retryend
如果有错误,会一直报错下去
(3)抛出异常
Ruby中使用raise语句抛出异常,类似于Java中的throw。异常信息可以被全局变量$!获取beginraise "test"rescueputs "error!"+$!# retryend
结果:
error!test(4)结束清理
Ruby中使用ensure语句来实现语句块的最后清理。不论语句块中是否出现异常,ensure块都将执行。s = 1begins = 1/0rescueputs "error!"+$!# retryensure puts "finished!"endputs "------------"s = 1begins = 1/2rescueputs "error!"+$!# retryensure puts "finished!"end
结果:
error!divided by 0finished!-----------finished!
小结:
Ruby中的类使用跟java大同小异了