在許多情況中,當你設計你的應用程式時,你可能想實現乙個方法僅為乙個物件內部使用而不能為另外一些物件使用。ruby提供了三個關鍵字來限制對方法的訪問。
這些關鍵字被插入在兩個方法之間的**中。所有從private關鍵字開始定義的方法都是私有的,直到**中出現另乙個訪問控制關鍵字為止。例如,在下面的**中,accessor和area方法預設情況下都是公共的,而grow方法是私有的。注意,在此doublesize方法被顯式指定為公共的。乙個類的initialize方法自動為私有的。
class rectangle
attr_accessor :height, :width
def initialize (hgt, wdth)
@height = hgt
@width = wdth
end
def area ()
@height*@width
end
private #開始定義私有方法
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可以在物件上執行,但是任何對grow的直接呼叫都被拒絕並且返回乙個錯誤。
irb(main):075:0> rect2=rectangle.new(3,4)
=> #
irb(main):076:0> rect2.doublesize()
=> "new area: 48"
irb(main):077:0> rect2.grow()
nomethoderror: private method 'grow' called for #
from (irb):77
from :0
預設情況下,在ruby中,例項和類變數都是私有的,除非提供了屬性accessor和mutator。
Ruby程式語言快速入門之方法訪問控制
在許多情況中,當你設計你的應用程式時,你可能想實現乙個方法僅為乙個物件內部使用而不能為另外一些物件使用。ruby提供了三個關鍵字來限制對方法的訪問。private 只能為該物件所訪問的方法。protected 可以為該物件和類例項和直接繼承的子類所訪問的方法。public 可以為任何物件所訪問的方法...
Ruby程式語言快速入門之類變數和類方法
象大多數物件導向語言一樣,ruby類也允許定義類變數和方法。乙個類變數允許在乙個類的所有例項間共享單個變數。在ruby中,兩個 號用於指示類變數。例如,如果你想要使乙個bankaccount類的所有例項共享相同的利息率,那麼該類可能被如下定義 class bankaccount interestra...
快速入門程式語言
曾經看到網上有說3天內學習了一門新的程式語言,很多人敬佩不已。3天學習一門語言需要有比較紮實的功底,主要是計算機組成原理。其實這對計算機專業出身的學生來講並不是難事。我就個人體會講講如何快速入門乙個全新的程式語言。學過組成原理的人就知道計算機真的只是一台 計算 機而已,計算機只能處理能夠最終轉化成算...