字號: 小 中 大 |
推薦給好友
上一篇 |
下一篇
Ruby程序語言之方法存取控制
發布: 2007-6-11 15:03 |
作者: 朱先忠 編譯 |
來源:
|
查看: 20次 | 進入軟件測試論壇討論
領測軟件測試網
在許多情況中,當你設計你的應用程序時,你可能想實現一個方法僅為一個對象內部使用而不能為另外一些對象使用。Ruby提供了三個關鍵字來限制對方法的存取。
- Private:只能為該對象所存取的方法。
- Protected:可以為該對象和類實例和直接繼承的子類所存取的方法。
- Public:可以為任何對象所存取的方法(Public是所有方法的默認設置)。
這些關鍵字被插入在兩個方法之間的代碼中。所有從private關鍵字開始定義的方法都是私有的,直到代碼中出現另一個存取控制關鍵字為止。例如,在下面的代碼中,accessor和area方法默認情況下都是公共的,而grow方法是私有的。注意,在此doubleSize方法被顯式指定為公共的。一個類的initialize方法自動為私有的。
classRectangle
attr_accessor:height,:width
definitialize(hgt,wdth)
@height=hgt
@width=wdth
end
defarea()
@height*@width
end
private#開始定義私有方法
defgrow(heightMultiple,widthMultiple)
@height=@height*heightMultiple
@width=@width*widthMultiple
return"Newarea:"+area().to_s
end
public#再次定義公共方法
defdoubleSize()
grow(2,2)
end
end |
如下所示,doubleSize可以在對象上執行,但是任何對grow的直接調用都被拒絕并且返回一個錯誤。
irb(main):075:0>rect2=Rectangle.new(3,4)
=>#<Rectangle:0x59a3088@width=4,@height=3>
irb(main):076:0>rect2.doubleSize()
=>"Newarea:48"
irb(main):077:0>rect2.grow()
NoMethodError:privatemethod'grow'calledfor#<Rectangle:0x59a3088@width=8,@height=6>
from(irb):77
from:0 |
默認情況下,在Ruby中,實例和類變量都是私有的,除非提供了屬性accessor和mutator。
(責任編輯:銘銘 mingming_ky@126.com TEL:(010)68476606)
文章來源于領測軟件測試網 http://www.kjueaiud.com/