1. 程式人生 > 其它 >java的23個設計模式 JAVA設計模式總結之23種設計模式

java的23個設計模式 JAVA設計模式總結之23種設計模式

面向物件的特徵

一、封裝

二、繼承

不使用繼承的方法

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()

"""
輸出結果:
求物件!
汪汪汪···
嗷嗚~
"""

當父類的方法不能滿足自己的需求的時候,可以對父類的方法進行重寫

三、多肽