Ruby程序設(shè)計(jì)語(yǔ)言快速入門(五)-----之方法存取控制
- · Private:只能為該對(duì)象所存取的方法。
- · Protected:可以為該對(duì)象和類實(shí)例和直接繼承的子類所存取的方法。
- · Public:可以為任何對(duì)象所存取的方法(Public是所有方法的默認(rèn)設(shè)置)。
這些關(guān)鍵字被插入在兩個(gè)方法之間的代碼中。所有從private關(guān)鍵字開(kāi)始定義的方法都是私有的,直到代碼中出現(xiàn)另一個(gè)存取控制關(guān)鍵字為止。例如,在下面的代碼中,accessor和area方法默認(rèn)情況下都是公共的,而grow方法是私有的。注意,在此doubleSize方法被顯式指定為公共的。一個(gè)類的initialize方法自動(dòng)為私有的。
?
class?Rectangle
attr_accessor?:height,?:width
def?initialize?(hgt,?wdth)
@height?=?hgt
@width?=?wdth
end
def?area?()
@height*@width
end
private?#開(kāi)始定義私有方法
def?grow?(heightMultiple,?widthMultiple)
@height?=?@height?*?heightMultiple
@width?=?@width?*?widthMultiple
return?"New?area:"?+?area().to_s
end
public?#再次定義公共方法
def?doubleSize?()
grow(2,2)
end
end
如下所示,doubleSize可以在對(duì)象上執(zhí)行,但是任何對(duì)grow的直接調(diào)用都被拒絕并且返回一個(gè)錯(cuò)誤。
irb(main):075:0>?rect2=Rectangle.new(3,4)
=>?#<Rectangle:0x59a3088?@width=4,?@height=3>
irb(main):076:0>?rect2.doubleSize()
=>?"New?area:?48"
irb(main):077:0>?rect2.grow()
NoMethodError:?private?method?'grow'?called?for?#<Rectangle:0x59a3088?@width=8,?@height=6>
from?(irb):77
from?:0?
默認(rèn)情況下,在Ruby中,實(shí)例和類變量都是私有的,除非提供了屬性accessor和mutator。
posted on 2006-06-19 12:01 nbt 閱讀(262) 評(píng)論(0) 編輯 收藏 所屬分類: Ruby On Railse技術(shù)