1. 程式人生 > >Python的基礎語法 10 面向物件的三大特性

Python的基礎語法 10 面向物件的三大特性

面向物件的三大特性:
	封裝
		是對屬性和方法的封裝
		封裝實際上是對內層資料的一種保護--資料隱藏
		封裝粒度:
			粒度太小:過程過於複雜,沒有必要
			粒度太大:沒有意義,不能顯示出程式的各司其職
		
	繼承
		特性:
		繼承另一個類的屬性和方法
		繼承體現了程式擴充套件性
		建立形式:   class 類名(父類名):
				pass
e.g.:
class Animal:
    hair='yellow'
    def eat(self):
        print("i am hungry")
class Dog(Animal):
    pass
dog1=Dog()
dog1.eat()
print(dog1.hair)
	繼承問題
		父類的非私有成員可以被子類繼承
		如果子類沒有構造方法,則會繼承父類構造方法
		如果子類有構造方法,則會呼叫自己的構造方法
		python是支援多繼承的
		如果子類要呼叫父類的構造方法:
			1.用 父類名.__init__(self)的形式
			2.super().__init__()可以解決菱形問題  不需要self
			3.super(子類,self).__init__()也可以解決菱形繼承問題
class A:
    def __init__(self):
        print("A")
class B(A):         #子類如何呼叫父類構造方法
    def __init__(self):
        A.__init__(self)
        print("B")
class C(A):
    def __init__(self):
        print("C")
class D(B,C):
    def __init__(self):
        print("D")
b=B()
	


	多型
		多型--多種形態
		多型性--當子類接收到同一條指令的時候會發出不同的行為
class Animal:
    def talk(self):
        print("animal talk")
class Cat(Animal):
    def talk(self):
        print("Meow")
class Dog(Animal):
    def talk(self):
        print("Bark")
class Fox(Animal):
    def talk(self):
        print("Dddddd")