程式繼承問題,有些人可能聽說,但是初學者可能對這個不熟,我就在這介紹給初學者們聽聽,簡單來說繼承就是你將一串程式碼的任何方式都接收下來,但是繼承有分,有些是繼承方法,有些是單純繼承但沒有他的方式,在python當中很常看見的是直接繼承方法,如果是使用 C 或者 JAVA 他有些繼承是沒有繼承方法,單純只是繼承一個形式搬移,這種又都很多不一樣在裡面。
class Equus:
def __init__(self, is_male):
pass
def run(self):
print(f'I run at speed {self.speed}')
print(f'I\'m {self.gender}')
class Horse(Equus):
def __init__(self, is_male):
print('Horse init')
self.speed = 30
self.gender = 'male' if is_male else 'female'
self.is_horse = True
def roar(self):
print('Hee haw~')
class Donkey(Equus):
def __init__(self, is_female):
print('Donkey init')
self.speed = 20
self.gender = 'female' if is_female else 'male'
self.is_donkey = True
def roar(self):
print('Hee haw hee hee haw~')
上面這套程式中,有人有介紹到關於繼承上的問題,而且也有透過多重方式來做雙重繼承的作用,大家可以參考這套程式來做學習,繼承比想像中的簡單很多,只是要很熟記他的邏輯,因為他的邏輯比較複雜,你需要很清楚這時候寫了這個代表甚麼意思,你才能對他很了解。
所以我們上半部的程式我們會稱為父程式,我們子程式需要父的方法我們就會說繼承父程式就是父繼承的方式。
class Account:
def __init__(self, id, name):
self.id = id
self.name = name
self.balance = 0
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
else:
raise ValueError('餘額不足')
def __str__(self):
return ('Id:\t\t' + self.id +
'\nName:\t\t' + self.name +
'\nBalance:\t' + str(self.balance))
class CheckingAccount(Account):
def __init__(self, id, name):
super(CheckingAccount, self).__init__(id, name) # 呼叫父類別__init__()
self.overdraftlimit = 30000
def withdraw(self, amount):
if amount <= self.balance + self.overdraftlimit:
self.balance -= amount
else:
raise ValueError('超出信用')
def __str__(self):
return (super(CheckingAccount, self).__str__() +
'\nOverdraft limit\t' + str(self.overdraftlimit));
上方程式中他是銀行的程式,他也利用繼承方式有做複寫的作用,所以這個例子大家也可以看看,這個做法也是蠻簡單易懂的。
繼承,不繼承,方便即可,繼承最方便,所以父繼承,子接受