#什麼時候用繼承
#1.當類之間有顯著不同,並且較小的類是較大的類所需的元件時,用組合比較好
#2.當類之間有很多相同的功能,提供這些共同的功能做成基類,用繼承比較好
class
dad:
"這個是爸爸類
"money=10
def__init__
(self,name):
print("爸爸"
) self.name=name
defhit_son(self):
print("
%s 正在打兒子
" %self.name)
class
son(dad):
money = 10000000
#當子類中有跟父類屬性同名的資料屬性或者方法屬性時會覆蓋父類中的屬性,當子類中沒有時會優先呼叫父類方法
def__init__
(self,name,age):
self.name=name
self.age=age
defhit_son(self):
print("
來自兒子類
",self.name)
#print(son.money)
#son.hit_son()
#print(dad.__dict__)
#print(son.__dict__)
#s1=son("tang")##
print(s1.name)
#print(s1.money)
#s1.hit_son()
#現在子類查詢自己的init方法
s1=son("
alex
","18")
s1.hit_son()
#print(son.money)
#print(dad.money)
#使用abc模組實現子類必須實現基類的方法
import abc#介面繼承
class all_file(metaclass=abc.abcmeta):
@abc.abstractmethod
def read(self):
pass
@abc.abstractmethod
def write(self):
pass
#介面:介面就是乙個函式,介面繼承:定義乙個基類,基類當中把自己的方法定義成基類函式,來乙個子類繼承他就必須實現基類的方法
#使用abc模組實現子類必須實現基類的方法
class disk(all_file):
def read(self):
print("disk read")
def write(self):
print("disk write")
class cdroom(all_file):
def read(self):
print("cdrom read")
def write(self):
print("cdrom write")
class mem(all_file):
def read(self):
print("mem read")
def write(self):
print("mem write")
def sad(self):
print("jjj")
m1=mem()
# m1.sad()
# m1.read()
# m1.write()
#繼承順序:1.python2:分經典類和新式類 經典類指不繼承基類object的類,新式類繼承基類object的類
2.python3:預設為新式類即預設繼承object基類
3.經典類預設是深度有限的繼成順序,新式類預設是廣度優先的繼承順序,新式類中可以使用類屬性.__mro__檢視類的繼承順序
class a:def test(self):
print("a")
#當類是新式類是繼承查詢順序為廣度優先
class b(a):
def test(self):
print("b")
class c(a):
def test(self):
print("c")
class d(b):
def test(self):
print("d")
class e(c):
def test(self):
print("e")
class f(d,e):
pass
# def test(self):
# print("f")
f1=f()
f1.test()#f--->d---->b ---->e---->c---->a
print(f.__mro__)
#python到底是如何實現繼承的,對於你定義的每乙個類,python會計算出乙個方法解析順序(mro)元祖,這個mro
#列表就是乙個簡單的,所有基類的線性順序元祖,python3預設繼承object基類
python物件導向的三大特徵
封裝就是對類和物件的成員訪問進行限制,設定可以訪問的方式和不可以訪問的方式。分類 私有化的封裝 當前類 物件種可以使用,類 物件外和子類 物件都不可以用 受保護的封裝 當前類 物件和子類 子類物件可以使用門,類 物件外不可以使用 公共的封裝 任何位置都可以訪問 例 class father 屬性 男...
物件導向三大特徵
1.繼承 什麼是繼承 繼承是一種建立新類的方式,在python中,新建的類可以繼承乙個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類 python中類的繼承分為 單繼承和多繼承 class parentclass1 定義父類 pass class parentclass2 定義父類 p...
物件導向三大特徵
是指將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問而是通過類提供的方法實現類內資訊的操作和訪問。可以通過j a中的訪問控制符來實現。實現復用。j a中,通過extends實現繼承 每個類只有乙個直接父類 j a.lang.object是所有類的直接 間接父類 子類獲得父類的全部屬性和方法 除...