Ruby基礎知識 6 類和物件

2022-02-10 23:20:11 字數 2153 閱讀 8393

一、類定義

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中,行為和屬性是分開的。屬性和行為應該放在一起,一起表示乙個具有屬性和行為的物件。封裝提供一種機制能夠給屬性和行為的訪問控制權。所以...