面向對象編程-類

一.面向過程編程與面向對象編程

1.面向過程編程:使用一系列的指令,一步一步地告訴計算機幹什麼。
2.面向對象編程oop:利用類和對象來建立各類模型來實現對真實世界的描述。

3.面向過程編程與oop的主要區別就是oop能夠使程序更加容易擴展和更改
二.基本概念
1.類:是對一類擁有相同屬性的的對象的抽象、藍圖、原型,在類中定義了這些對象都具有的屬性、共同的方法。

2.對象:一個對象便是一個類的實例化後的實例,一個類必須通過實例化後後方可在程序中調用。一個類能夠實例化不少對象。每一個對象亦能夠有不一樣的屬性。

3.封裝:在類中對數據的賦值、內部調用對外部用戶是透明的,這使類變成了一個膠囊或容器,裏面包含着類的數據和方法。

4.繼承:一個類能夠派生出子類,在這個父類裏定義的屬性、方法自動被子類繼承。

5.多態:一個接口,多種實現,指一個基類中派生出了不一樣的子類,且每一個子類在繼承了一樣的方法的同時又對父類的方法作了不一樣的實現,這就是同一種事物表現出的多種形態。

例子:
 1 class Role(object):#執行時以後就存在內存裏
 2     def __init__(self,name,role,weapon,life_value=100,money=15000):
 3         #構造函數
 4         #做用:在實例化時作一些類的初始化工做,開闢一塊內存
 5         self.name=name
 6         self.role=role
 7         self.weapon=weapon
 8         self.life_value=life_value
 9         self.money=money
10 
11     def shot(self):
12         print('%s is shooting...' % self.name)
13 
14     def got_shot(self):
15         print('%s is getting shot...' % self.name)
16 
17     def buy_gun(self,gun_name):
18         print('%s has bought %s' % (self.name,gun_name))
19 
20 role1=Role('James','police','AWM') #實例化,生成一個對象
21 #調用role的同時也將role1傳進去了,類裏面函數自帶的self就是爲了傳實例名role1
22 #實際上實例化的過程是是這樣的:
23 #role1=Role(role1,'James','police','AWM')
24 #role1.name='James'
25 #role1.role='Police'
26 #role1.weapon='AWM'
27 #role1.shot()#其實是Role=shot(role1)
28 #role1.got_shot()#其實是Role=got_hot(role1)
29 #role1.buy_gun()#其實是Role=buy_gun(role1,gunnamme)
30 
31 #與調用函數不一樣
32 #調用函數,-》執行,-》返回結果
33 #role1=role.__init__() return 地址
34 
35 role1.shot()
36 role1.got_shot()
37 role1.buy_gun('AK47')

結果:編程

相關文章
相關標籤/搜索