物件、類別傻傻搞不清楚?

什麼是物件Object?

物件是從類別Class所創造出來的實體Instance
每個物件都有自己的狀態State(由類別的屬性定義)和行為Behavior(由類別的方法定義)。
有了類別之後,就可以做很多不同的物件

什麼是類別Class?

譬如一隻貓可以是一種類別,
物件的狀態,有貓的”毛色”以及”品種”
物件的行為,有貓的”聲音”

用Ruby on rails來舉一個例子,幫助了解實際的運用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#定義一個類別
class Cat

#initialize可以定義類別屬性
def initialize(name, breed, color)
@name = name
@breed = breed
@color = color
end

#定義一個類別方法,是貓的行為
def sound
"meow meow"
end

#定義一個類別方法
def check_info
"My name is #{@name},I'm #{@breed},my color is #{@color}"
end

end


#接下來,從貓類別創造出不同的物件
cat1 = Cat.new("Jane","Mix","Orange")
cat2 = Cat.new("Olive","Munchkin","Grey", )
cat3 = Cat.new("Cliff","Siamese","White")

# 調用物件身上的方法
puts cat1.sound #meow meow
puts cat2.check_info # My name is Olive,I'm Munchkin,my color is Grey"

這樣就完成了Cat類別,
有@name、@breed、@color總共3個實體變數,
定義貓的名字、品種、顏色;
有sound方法、check_info方法
知道貓類別的聲音
知道貓類別的基本資訊
每個物件都有屬於自己的狀態和行為
也可以呼叫方法

參考資料

類別(Class)與模組(Module)