8.Ruby類別與物件(class & object)

1.建立類別(class): 需以大寫字母開頭

class Car

def initialize #initialize 建構元(constructor), 若帶參數 initialize(color), 則@color=color即可由外部引入
@color = “red”   #@color 稱為 實體變數 (instance variable)
end

def get_color
return @color
end

end

2.建立物件(object) obj_name = Class_name.new
*使用建構元,並由外部引入參數值

Bmw = Car.new
puts Bmw.get_color(“red”)

3.物件外部可見度(屬性 Attrubition):可讀、可寫、可讀寫
(1).建立可讀屬性
* 利用 attr_reader :color 取代下面程式
def color()
@color
end

Ex:
class Car

attr_reader :color
def initialize(color)
@color = color
end

end

Bmw = Car.new(“black”)
puts “The car is ” + Bmw.color

$ ruby class.rb
The car is black

**若是建立兩個物件皆採用建構元,屬性是可讀,則會出現警告
Bmw = Car.new(“black”)
puts “The car is ” + Bmw.color
Bmw = Car.new(“red”)
puts “The car is ” + Bmw.color

$ ruby class.rb
The car is black
class.rb:12: warning: already initialized constant Bmw
The car is red

(2).建立可寫屬性
attr_writer :color 相當於下列程式:
def color=(color)
@color=color
end

class Car
attr_reader :color
attr_writer :color
def initialize(color)
@color = color
end
end
Bmw = Car.new(“black”)
puts “The car is ” + Bmw.color
#Bmw = Car.new(“red”)
Bmw.color=”red”
puts “The new car is ” + Bmw.color
(3).建立可讀寫屬性
利用 attr_accessor :color 代替下列可讀、可寫,就變成可讀寫的屬性了

attr_reader :color
attr_writer :color

Share and Enjoy:
  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • MySpace
  • Plurk
  • RSS
  • Google Buzz
  • Live
本篇發表於 Ruby。將永久鏈結加入書籤。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *