iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Python

30天零基礎學習Python程式語言系列 第 24

Day 24: 繼承 + 重寫方法

  • 分享至 

  • xImage
  •  

繼承:
父類別 <-> 子類別(可繼承父類別的屬性和方法,在Python中可指定父類別)
範例:創建動物父類別,三個子類別

class Animal:
    alive = True
    
    def eat(slef):
        print("這動物正在吃東西")
    def sleep(slef):
        print("這動物正在睡覺")
        
#兔子
Class Rabbit(Animal):
    def jump(slef):
        print("這隻兔子正在跳")
animal = Animal()
animal.eat()
animal.sleep()

rabbit = Rabbit()
rabbit.jump()

這動物正在吃東西
這動物正在睡覺
這隻兔子正在跳

因為兔子繼承了動物,因此他可使用動物的屬性

class Animal:
    alive = True
    
    def eat(slef):
        print("這動物正在吃東西")
    def sleep(slef):
        print("這動物正在睡覺")
        
#兔子
Class Rabbit(Animal):
    def jump(slef):
        print("這隻兔子正在跳")

rabbit = Rabbit()
rabbit.jump()
rabbit.eat()


這隻兔子正在跳
這動物正在吃東西

另外新增兩個子類別

class Animal:
    alive = True
    
    def eat(slef):
        print("這動物正在吃東西")
    def sleep(slef):
        print("這動物正在睡覺")
        
#兔子
class Rabbit(Animal):
    def jump(slef):
        print("這隻兔子正在跳")

#魚
class Fish(Animal):
    def swim(slef):
        print("魚正在游泳")
        
#老鷹
class Hawk(Animal):
    def fly(self):
        print("老鷹正在飛")
        
fish = Fish()
fish.swim()
fish.eat()

Hawk = Hawk()
hawk.sleep()
hawk.fly()


魚正在游泳
這動物正在吃東西
這動物正在睡覺
老鷹正在飛

重寫Overriding(物件導向特性)
ex:父類別可以定義方法,但子類別也有權利重寫

class Animal:
    def eat(slef):
        print("動物正在吃東西")
        
class Rabbit(Animal):
    def eat(slef):
        print("兔子正在吃紅蘿蔔")
        
animal = Animal()
animal.eat()
rabbvit = Rabbit()
rabbit.eat()


動物正在吃東西
兔子正在吃紅蘿蔔

範例:在動物(父類別)以及貓狗(子類別)中間增加哺乳類

class Animal:
    def eat(slef):
        print("動物正在吃東西")

#哺乳類 Mammal
class Mammal():
    def hi(slef):
        print("我是哺乳類")
    pass
#貓 Cat
class Cat(Mammal):
    def eat(slef):
        print("貓正在吃魚")
        
#狗 Dog
class Dog(Mammal):
    def eat(slef):
        print("狗正在啃骨頭")
        
cat = Cat()
cat.eat()
dog = Dog()
dog.eat()
mammal = Mammal()
mammal.eat()


貓正在吃魚
狗正在啃骨頭
動物正在吃東西

上一篇
Day 23: 物件導向編程快速入門 + 類別變數
下一篇
Day 25: 方法鏈 + super 方法 + 物件作為引數
系列文
30天零基礎學習Python程式語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言