Python中的封裝,繼承和多態


面向對象的三大特性:封裝,繼承和多態

封裝:在類的內部定義屬性和方法,通過對象或類名來訪問屬性和方法,隱藏功能的實現細節,也可以設置訪問權限。

廣義的封裝:實例化一個對象,給對象空間封裝一些屬性;狹義的封裝:私有制;私有成員:私有靜態字段,私有方法,私有對象屬性

繼承:子類需要重用父類的屬性和方法,子類中也可以定義自己的屬性和方法。

多態:python是弱類型語言,python中處處是多態;python中沒有多態,但是有鴨子類型  ==》一些類含有相同的方法,則這些類就互稱為鴨子

下面這幾個類都有index方法,index具有相同的作用,則這幾個類就互稱為鴨子

class Str:
      def index(self):
            pass

class List:
      def index(self):
            pass

class Tuple:
      def index(self):
            pass

  對於私有成員,類的外部不能訪問,子類(派生類)也不可以訪問,只能在本類的內部訪問

class Animal:
      head = "True"  #靜態變量(靜態字段)
      body = "True" #靜態變量(靜態字段)
      __color = "red" #私有靜態變量(私有靜態字段)
      __skin = "black" #私有靜態變量(私有靜態字段)
      def __init__(self,name,age): #特殊方法
            self.name = name #對象屬性(普通字段)
            self.age =age #對象屬性(普通字段)
      def eat(self):#普通方法
            print("所有動物都需要吃……")
      def drink(self):#普通方法
            print("所有動物都需要喝……")
      def __func(self):#私有方法
            print("Animal fun")

      def fun(self):
            self.__func() #私有方法在類的內部可以訪問
class Dog(Animal):
     pass

a1 = Animal("小貓",2)
##print(a1.head,a1.body)
##a1.eat()
##print(a1.__color) #報錯 對象不可以訪問類的私有靜態變量
##a1.__func() #報錯 對象不可以訪問類中私有方法

##print(Animal.head)
##print(Animal.__color) #報錯 類名不可以訪問類中的私有靜態變量
##Animal.__func() #報錯 類名不可以直接訪問類中的私有方法

d = Dog("小狗","2")
#print(d.head)
#print(d.__color) #報錯 子類不可以訪問父類的私有靜態變量
#d.__func() #報錯 子類不可以訪問父類的私有方法

d.fun()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM