重修課程day22(面向對象三之繼承和派生)
面向對象的三大特性:封裝,繼承和多態
一 繼承
1 什麽是繼承:1.1 什麽是什麽的關系。一個類是另一個類的子類。
1.2 繼承是一種創新類的方式。新建的類可以繼承一個或多個父類。父類又稱為基類或超類,新建的類又稱為派生類或子類
繼承一個父類叫做單繼承;繼承多個父類叫做多繼承。
2 繼承的好處:減少代碼的冗余,增強了代碼的重用性。
二 繼承的用法
super:調用父類的功能和方法
格式一:在子類的內部調用父類的屬性和方法
class 父類名:
def 屬性(self):
功能
class 子類名(父類名):
def 屬性(self):
super().屬性名
class A: def aa(self): print(11) class B(A): def aa(self): super().aa() b=B() b.aa()
在子類的內部調用父類的功能和方法可以不用傳入參數,可以直接(super().屬性名)就可以調用
格式二:在子類的外部調用父類的功能和方法
class 父類名:
def 屬性(self):
功能
class 子類名(父類名):
pass
對象=子類名()
super(子類名,對象).屬性()
# class A: # def aa(self): # print(11) # class B(A): # pass # b=B() # super(B,b).aa()
在子類外部調用父類的屬性和方法是,必須要給super傳入兩個參數,一個是子類名,一個是對象名:super(子類名,對象).屬性()
在多繼承的時候,super繼承的是第一個父類。
super:新式類調用父類的方法。super找到有該方法或屬性的第一個父類。
# class People: # def __init__(self,name,age,sex): # self.name=name # self.age=age # self.sex=sex # class Nan: # pass # class Student(Nan,People): # def __init__(self,name,age,sex): # super().__init__(name,age,sex) # fang=Student(‘fang‘,‘男‘,18) # print(fang.name)
父類名.__init__(self):經典類調用父類方法和屬性的方式。
# class People: # def __init__(self,name,age,sex): # self.name=name # self.age=age # self.sex=sex # class Nan: # pass # class Student(Nan,People): # def __init__(self,name,age,sex): # People.__init__(self,name,age,sex) # fang=Student(‘fang‘,‘男‘,18) # print(fang.name)
繼承中子類可以繼承父類的所有屬性和方法
# class People: # def __init__(self,name,age,sex): # self.name=name # self.age=age # self.sex=sex # class Nan: # pass # class Student(Nan,People): # def __init__(self,name,age,sex): # People.__init__(self,name,age,sex) # fang=Student(‘fang‘,‘男‘,18) # print(fang.name)
當子類和父類中有同名的方法和屬性時,一定是調用自己的。
如果想要調用父類的方法和屬性時,需要借用super來調用。
對象剋有調用自己和父類的所有方法和屬性,首先是調用自己的,自己沒有在去調用父類的。
誰(對象)調用方法,self就會指向誰。
自己私有的方法叫做派生方法;自己私有的屬性叫做派生屬性。
從下到上叫做抽象,從上到下就叫做繼承。
重修課程day22(面向對象三之繼承和派生)