java的23個設計模式 JAVA設計模式總結之23種設計模式
阿新 • • 發佈:2022-04-11
面向物件的特徵
一、封裝
二、繼承
不使用繼承的方法
class Animal: """ 建立一個動物類 """ def eat(self): """ 增加吃的方法 """ print("吃") def drink(self): """ 增加喝的方法 """ print("喝") def play(self): """ 增加玩的方法 """ print("玩") class Dog: """ 建立一個狗類 """ def eat(self): """ 增加吃的方法 """ print("吃") def drink(self): """ 增加喝的方法 """ print("喝") def play(self): """ 增加玩的方法 """ print("玩") def shout(self): """ 增加喊叫的方法 """ print("汪汪汪···") class Cat: """ 建立一個狗類 """ def eat(self): """ 增加吃的方法 """ print("在吃") def drink(self): """ 增加喝的方法 """ print("喝") def play(self): """ 增加玩的方法 """ print("玩") def shout(self): """ 增加喊叫的方法 """ print("喵喵喵···") # 建立物件 wangcai = Dog() wangcai.eat() wangcai.play() wangcai.drink() wangcai.shout() lili = Cat() lili.eat() lili.play() lili.drink() lili.shout() """ 輸出結果: 吃 玩 喝 汪汪汪··· 在吃 玩 喝 喵喵喵··· """
在沒有使用繼承開發的程式在一定情況下,程式會變成非常的多餘
使用繼承方法
class Animal: """ 建立一個動物類 """ def eat(self): """ 增加吃的方法 """ print("吃") def drink(self): """ 增加喝的方法 """ print("喝") def play(self): """ 增加玩的方法 """ print("玩") class Dog(Animal): """ 建立一個狗類 """ def shout(self): """ 增加喊叫的方法 """ print("汪汪汪···") class Cat(Animal): """ 建立一個狗類 """ def shout(self): """ 增加喊叫的方法 """ print("喵喵喵···") # 建立物件 wangcai = Dog() wangcai.eat() wangcai.play() wangcai.drink() wangcai.shout() lili = Cat() lili.eat() lili.play() lili.drink() lili.shout() """ 輸出結果: 吃 玩 喝 汪汪汪··· 在吃 玩 喝 喵喵喵··· """
繼承:
想要繼承一個類,可以使用:類名(要繼承的類名)
父類
子類
繼承的傳遞性
class Animal: """ 建立一個動物類 """ def eat(self): """ 增加吃的方法 """ print("吃") def drink(self): """ 增加喝的方法 """ print("喝") def play(self): """ 增加玩的方法 """ print("玩") class Dog(Animal): """ 建立一個狗類 """ def shout(self): """ 增加喊叫的方法 """ print("汪汪汪···") class Hsq(Dog): """ 建立一個哈士奇狗類 """ def open(self): """ 增加拆家的方法 """ print("拆家中···") # 建立物件 erha = Hsq() erha.eat() erha.play() erha.shout() erha.drink() erha.open() """ 輸出結果: 吃 玩 汪汪汪··· 喝 拆家中··· """
繼承具有傳遞性,可以使用父類,也可以使用父類的父類等等;
注意:object 是所有類的父類
繼承的注意事項
同級之間不能互相借用屬性、方法;
子類覆蓋父類的方法
class Animal:
"""
建立一個動物類
"""
def eat(self):
"""
增加吃的方法
"""
print("吃")
def drink(self):
"""
增加喝的方法
"""
print("喝")
def play(self):
"""
增加玩的方法
"""
print("玩")
def shout(self):
"""
增加喊叫的方法
"""
# 父類的父類呼叫父類的方法不行,會報錯
# Dog.shout(self)
print("嗷嗚~")
class Dog(Animal):
"""
建立一個狗類
"""
def shout(self):
"""
增加喊叫的方法
"""
print("汪汪汪···")
class DsDog(Dog):
"""
建立一個單身狗類
"""
# 這是子類重寫父類的方法
def shout(self):
"""
增加喊叫的方法
"""
# 子類特有的需求
print("求物件!")
# 呼叫父類的方法
super().shout()
# 呼叫父類的父類的方法
Animal.shout(self)
# 遞迴(死迴圈)
# DsDog.shout(self)
# 建立物件
huahua = DsDog()
huahua.shout()
"""
輸出結果:
求物件!
汪汪汪···
嗷嗚~
"""
當父類的方法不能滿足自己的需求的時候,可以對父類的方法進行重寫