一、類定義
class account
attr_accessor :number
@@count = 0
def initialize(number, name, balance)
@number = number
@name = name
@balance = balance
@@count = @@count + 1;
end
def account.count
@@count
end
def account.count=(value)
@@count = value
end
def name
@name
end
def name=(value)
@name = value
end
def balance
@balance
end
def deposit(money)
if money <= 0
raise argumenterror, "必須是正數"
end@balance += money
end
def withdraw(money)
if money > @balance
raise runtimeerror, "餘額不足"
end@balance -= money
end
def ==(that)
self.name == that.name && self.balance == that.balance && self.number == that.number
endend
acct = account.new("123", "swzhou", 0)
puts acct.number
puts acct.name
puts account.count
acct = account.new("456", "zsw", 0)
puts account.count
ruby中通過class classname … end定義類。
類的例項變數採用@操作符定義,類變數採用@@操作符定義。
attr_reader設定可讀變數,類似c#中的get方法,attr_writer設定可寫變數,類似c#中的set方法;attr_accessor設定變數的可讀寫。
initialize預設為類的建構函式。定義類之後,可以使用new方法來建立例項,實際上new是類的方法,其功能是建立新物件,並以傳入的引數呼叫initialize初始化物件。
def self.new(*args)
o = self.allocate
o.send(:initialize, args)
oend
類中不允許方法過載,同名的方法後乙個將會覆蓋前乙個方法定義。
可以使用instance_of?方法測試物件是否為某個類的例項,可以使用is_a?或===方法判定是否為某個繼承體系的例項。
二、類繼承
class checkingaccount < account
attr_reader :id, :name, :balance
def initialize(id, name)
@id = id
@name = name
@balance = 0
@overdraftlimit = 30000
enddef withdraw(amt)
if amt <= @balance + @overdraftlimit
@balance -= amt
else
raise runtimeerror, "超出信用額度"
endend
def to_s
super + "over limit\t# "#super呼叫父類別to_s方法
endend
acct = checkingaccount.new(" e1223", "justin lin")
puts acct.to_s
ruby中使用《表示類的繼承關係,且只能單一繼承。
類中private、protected、public方法限定了類方法的訪問許可權。
Ruby基礎知識 常用物件
不同於c 中的datetime,在ruby中日期和時間分別對應了date和time兩個類。1.1 日期 require date date date.new 2013,5,28 date date 1 昨天 date date 1 下月 puts date.leap?閏年判斷 puts date.t...
類和物件基礎知識
1.類和物件的基礎知識 定義 類就可以看做是對相似事物的抽象 訪問限定符 public,private,protect 封裝性 1 良好的封裝能夠減少耦合。2 類內部的結構可以自由修改。3 可以對成員進行更精確的控制。4 隱藏實現細節 物件大小計算 只計算非靜態成員變數 公有私有都算 不算函式,和s...
C 基礎知識(類和物件)
現實世界中,將事物的屬性和行為表示出來,就可以抽象出這個事物。定義乙個結構體用來表示乙個物件所包含的屬性,函式用來表示乙個物件所具有的行為,這樣就可以表示乙個事物。在c中,行為和屬性是分開的。屬性和行為應該放在一起,一起表示乙個具有屬性和行為的物件。封裝提供一種機制能夠給屬性和行為的訪問控制權。所以...