markdown
#說明
繼承是物件導向中Object-oriented programming,縮寫:OOP 的觀念,參考: 物件導向程式設計
這篇就來實作看看吧~~~ ^^
#操作流程
##Code
```
#繼承
class Animal:
name = ''
def __init__(self, name):
self.name = name
def walk(self):
print('walking')
def eat(self):
print('eating')
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
def walk(self):
print('{0} using foot walk'.format(self.name))
def eat(self):
print('{0} eat bone'.format(self.name))
class fish(Animal):
def __init__(self, name):
super().__init__(name)
def walk(self):
print('{0} using hand swim'.format(self.name))
def eat(self):
print('{0} eat fish'.format(self.name))
animal = Dog('A')
animal.eat()
animal.walk()
animal = fish('fish')
animal.eat()
animal.walk()
```
##程式輸出
##概念
這裡是先有一個物件 Animal, 這個 Animal 物件底下包含了 name 和 walk 和 eat 三個方法
再新增一個物件 Dog
```
class Dog(Animal):
```
這裡的Dog 則是繼承 Animal 的物件屬性 ,其中Dog 再複寫 walk 和 eat 方法
#大概可以把繼承想像成用物件呼叫上一個物件,可以套用上一個物件的屬性,這樣的行為就是繼承。
##做一個不要複寫的繼承Code
```
class Animal:
name = ''
def __init__(self, name):
self.name = name
def walk(self):
print('walking')
def eat(self):
print('eating')
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
# def walk(self):
# print('{0} using foot walk'.format(self.name))
# def eat(self):
# print('{0} eat bone'.format(self.name))
animal = Dog('A')
animal.eat()
animal.walk()
```
##輸出
##概念
這裡就把 walk 和 eat 在dog 裡面的屬性註解,就不覆蓋原先的在 animal 的屬性,直接繼承 animal 的屬性。
##參考
- 物件導向程式設計
- Python3 教學 #05 (Ch9: Class: 繼承、建構子、多型、封裝、覆載)
- DAY08-搞懂Python的OOP
留言
張貼留言