Ruby程式語言快速入門之類變數和類方法

2021-04-09 07:12:46 字數 1916 閱讀 2173

象大多數物件導向語言一樣,ruby類也允許定義類變數和方法。乙個類變數允許在乙個類的所有例項間共享單個變數。在ruby中,兩個@@號用於指示類變數。例如,如果你想要使乙個bankaccount類的所有例項共享相同的利息率,那麼該類可能被如下定義:

class bankaccount

@@interestrate = 6.5

def bankaccount.getinterestrate()

@@interestrate

endattr_accessor :balance

def initialize (bal)

@balance = bal

endend

如你所見,類變數必須在使用前初始化,並且就象例項變數一樣,如果你想訪問類變數的話,你需要編寫訪問器方法。在此,我定義了乙個類方法來返回利息率。注意,類名和在getinterestrate前面的句號表示乙個類方法。乙個類方法,不管對於任何例項,其工作方式都是相同的-在此,是把相同的利息率返回到所有的bankaccount例項。為了呼叫類方法,你需要使用類名,就象它使用於類方法定義中一樣:

irb(main):045:0> bankaccount.getinterestrate

=> 6.5

事實上,用於建立類例項的"new"方法就是乙個類方法。因此,當你在程式中輸入"rectangle.new"時,你實際在呼叫new類方法-這是ruby預設情況下所提供的。

繼承 物件導向程式設計的原則之一是支援類層次結構。就象自然界中的事物分類一樣,類允許從更為通用的類進行繼承。物件導向程式設計的特徵主要體現在方法和變數的使用上。例如,乙個square類繼承rectangle類的一些特徵,如方法和變數。乙個square是一種更具體型別的rectangle(高度和寬度相等的rectangle例項),但是它仍然有乙個高度和寬度,也有乙個面積(而且與矩形的計算方法相同)。在ruby中,square類可以使用下列定義建立:

class square < rectangle

end  "

class square < rectangle

def initialize (size)

@height = size

@width = size

end

end 

因為在ruby中一切都是物件,所以ruby中的一切幾乎都派生自object類。儘管這在所有類定義中都不是顯式的(你不會看到

當編寫你的應用程式時,你可以在乙個類定義外定義方法。在本文開始,你已看到了乙個並不是任何乙個類的一部分的攝氏到華氏轉換器方法。作為另外乙個示例,下面是乙個位於任何類之外的方法:

def feel?

return "i feel fine."

end 

為了執行這個方法,只要輸入該方法名,而不需要類或例項:

irb(main):042:0> feel?

=> "i feel fine." 

此方法看似另外一種語言(如c)中的函式或過程。事實上,儘管這些方法看上去好象不屬於任何類,但是這些方法卻都是你已經新增到object類上的方法,它(因為object是所有類的超類)反過來也把這一方法新增到你的繼承類上。因此,現在你可以在任何物件(如square和rectangle的例項)甚至乙個類(如rectangle類)上呼叫這個方法。

irb(main):043:0> sq1=square.new(4)

=> #

irb(main):044:0> rect1=rectangle.new(5,7)

=> #

irb(main):045:0> sq1.feel?

=> "i feel fine."

irb(main):046:0> rect1.feel?

=> "i feel fine."

irb(main):047:0> rectangle.feel?

=> "i feel fine."

Ruby程式語言快速入門之方法訪問控制

在許多情況中,當你設計你的應用程式時,你可能想實現乙個方法僅為乙個物件內部使用而不能為另外一些物件使用。ruby提供了三個關鍵字來限制對方法的訪問。這些關鍵字被插入在兩個方法之間的 中。所有從private關鍵字開始定義的方法都是私有的,直到 中出現另乙個訪問控制關鍵字為止。例如,在下面的 中,ac...

Ruby程式語言快速入門之方法訪問控制

在許多情況中,當你設計你的應用程式時,你可能想實現乙個方法僅為乙個物件內部使用而不能為另外一些物件使用。ruby提供了三個關鍵字來限制對方法的訪問。private 只能為該物件所訪問的方法。protected 可以為該物件和類例項和直接繼承的子類所訪問的方法。public 可以為任何物件所訪問的方法...

快速入門程式語言

曾經看到網上有說3天內學習了一門新的程式語言,很多人敬佩不已。3天學習一門語言需要有比較紮實的功底,主要是計算機組成原理。其實這對計算機專業出身的學生來講並不是難事。我就個人體會講講如何快速入門乙個全新的程式語言。學過組成原理的人就知道計算機真的只是一台 計算 機而已,計算機只能處理能夠最終轉化成算...