網站首頁 編程語言 正文
1. 單繼承
繼承的主要作用是實現代碼的重用。繼承使得子類擁有父類的方法和屬性。
直接來看一個例子吧。
class animal:
def eat(self):
print("吃")
def drink(self):
print("喝")
class dog(animal):
def dark(self):
print("汪汪叫")
goudan = dog()
goudan.eat()
goudan.drink()
從上面的代碼可以看出,在編寫dog類的時候,我們并沒有重寫eat和drink兩個方法。我們只需要在dog后面的括號中加上父類的名字即可。當子類繼承了父類,子類就可以直接使用父類中的方法了。在本例中,goudan可以直接使用animal類中的eat和drink兩個方法。
而且一個神奇的事情是,繼承是具有傳遞性的。子類擁有父類的方法和屬性,同時也具有父類的父類所具有的屬性。
2. 繼承中的方法重寫
有時候,父類中的方法并不能完成滿足子類的需求。這時候我們就需要方法重寫了。子類方法重寫一般有兩種情況:
- 覆蓋父類的方法
- 對父類的方法進行擴展
一種簡單的方法是直接重寫相應的方法。下面這個例子就是重寫了drink這個方法。當使用goudan調用drink這個方法方法時,結果并不是喝而是拿舌頭喝水。
class animal:
def eat(self):
print("吃")
def drink(self):
print("喝")
class dog(animal):
def drink(self):
print("拿舌頭喝水")
def dark(self):
print("汪汪叫")
goudan = dog()
goudan.eat()
goudan.drink()
當我們的需求不是簡單的覆蓋父類中的方法,而是在父類方法的基礎上對方法進行擴展。具體的做法是:
- 在需要的位置使用super().父類方法 來調用父類方法的執行
- 代碼的其他位置針對子類的需求,編寫子類持有的代碼實現
我們來看一個例子,此時goudan在調用drink方法的時候,會輸出喝和拿舌頭喝水兩個輸出。
class animal:
def eat(self):
print("吃")
def drink(self):
print("喝")
class dog(animal):
def drink(self):
# 1. 根據子類的需求編寫特定的代碼
print("拿舌頭喝水")
# 2. 使用super繼承父類中的fangfa
super().drink
def dark(self):
print("汪汪叫")
goudan = dog()
goudan.eat()
goudan.drink()
3. 多繼承
對于Python而言,一個子類可以有多個父類。多繼承的基本語法是比較簡單的。話不多說,直接看一個例子
class A():
def test(self):
print("test")
class B():
def demo(self):
print("demo")
class C(A,B):
pass
c = C()
c.test()
c.demo()
總結
原文鏈接:https://blog.csdn.net/hello_JeremyWang/article/details/122380842
相關推薦
- 2022-05-10 ioc注解方式和xml方式混用
- 2022-04-10 vscode快速輸出格式化console.log
- 2022-11-18 阿里云kubernetes查找鏡像中jar包的方法(docker查看鏡像中的jar)_云其它
- 2022-06-15 Golang?gin跨域解決方案示例_Golang
- 2022-04-20 Android實現將View轉化為圖片并保存到本地_Android
- 2022-05-28 C++?數據結構超詳細講解單鏈表_C 語言
- 2023-12-21 npm install 報錯(npm ERR! errno: -4048, npm ERR! c
- 2022-07-08 python使用IPython調試debug程序_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支