本文目標:
1、了解繼承的定義
2、掌握繼承的好處
(一)、定義
#
我們仔細看上面一張圖,然後做一件事情,找出他們的共同點
共同點:
#1、都擁有部分相同的屬性和方法
2、他們都是人
按照正常類的定義走,我們要實現以上2個類,我們得分別定義NBA球員這個類別的所有屬性和方法,然後定義女主播類別的時候,還得寫一遍重複的姓名,身高,體重等屬性和吃飯的方法,如果又有一個類別例如叫學生,那意味著這些共同的屬性和共同的方法又得重複寫一遍,以此類推,程式碼會有很多地方類似,這樣增加的程式碼的冗餘性,所以為了解決這種冗餘性,為了讓程式碼更簡潔,可重複使用性高,我們可以把這些共同的屬性和方法都寫到一塊去,然後讓每個類別都去調用這個公共的屬性和方法,這樣維護起來是不是就更加方便了,而且程式碼也更加簡潔了,那麼這種做法我們就叫做繼承
具體怎麼做的呢,如下圖
我們先創建了一個「人」的類,讓這個人都有2個類別都有的屬性與方法,再讓NBA球員和女主播都繼承「人」 這個類別
概念:被繼承的類別叫父類,例如人,繼承的類別叫子類別
總結:什麼是繼承,繼承是一種方法,用來提高程式碼的可重複使用性和減少程式碼的冗餘性,就像現實生活中的遺傳一樣,子女都會繼承父母的部分基因,所以你一生下來你就是有人類的共同屬性和行為
(二)、繼承的好處
1、提高程式碼的重用性,節約了程式設計的時間和代價
父類別中定義的屬性和方法就不需要子類中重複定義,子類只要繼承了父類,就擁有了父類中所有的屬性和方法
#2、對於同一個父類下的所有子類,調用他們的時候可以一視同仁
例如不管是NBA球員還是女主播,因為他們都是人,所以我們呼叫他們的時候可以直接呼叫父類的方法,比如吃飯,而不用管這個類到底是NBA球員還是女主播
3、子類別可以修改調整父類別定義的類別成員
a、我們稱為重寫(Overwrite)
b、一旦子類別修改好了,就依照子類別定義的方法執行
這相當於變異
學習任何東西我們既要知道其理論,還要有相關的理論實踐,其實所有的理論都是實踐得出來的,所以有的時候我一再強調,理論雖然很抽象,但是大家有了一定的實踐經驗後也要進行總結,總結一些言簡意賅,通俗易懂的“理論”,這個習慣培養好了以後,我相信許多知識大家能夠了解的更加透徹,同時更容易抓住事情的本質,這樣分析問題的能力也會提升。
好了,既然要理論和實踐結合,那麼接下來,我們透過程式碼進行實操演示,看看程式碼中具體是怎麼實現繼承的
(三)、具體程式碼
<?php /*** * 案例目标 * 1.掌握继承的定义 2.掌握继承的好处 */ //定义一个“人”类 class Human{ public $name = "";//姓名 public $height = "";//身高 public $weight = "";//体重 public function eat($food){ echo $this->name."在吃".$food."<br/>"; } } //女主播 class Anchors extends Human{ public $name = ""; public $stageName = ""; public function __construct( $name,$stageName ){ $this->name = $name; $this->stageName = $stageName; } public function singing(){ echo "我是女主播,我会唱歌<br/>"; } //重写方法eat public function eat($food){ echo "我是女主播,我是边唱歌边吃{$food}<br/>"; } } //Nba球员类 class NbaPlayer extends Human{ //因为父类已经有了,所以就不需要再写了,通过extends来实现 // public $name = "";//姓名 // public $height = "";//身高 // public $weight = "";//体重 public $team = "";//团队 public $playerName = "";//球员号码 public function __construct( $name,$height,$weight,$team,$playerName ){ $this->name = $name; $this->height=$height; $this->weight = $weight; $this->team = $team; $this->playName = $playerName; echo "构造函数执行了,当前对象是{$this->name}<br/>"; } //跑步 public function run(){ echo "跑步中<br/>"; } //跳跃 public function jump(){ echo "跳跃<br/>"; } //运球 public function dribble(){ echo "运球<br/>"; } //传球 public function pass(){ echo "传球<br/>"; } //投篮 public function shoot(){ echo "投篮<br/>"; } //扣篮 public function dunk(){ echo "扣篮<br/>"; } //重写方法eat ,只要名称和父类一样就是代表重写了不一定参数也要保持一样 public function eat($food){ echo "我是Nba球员,我是站着吃饭,边吃{$food}边看球赛<br/>"; } } //测试,NBA球员,没有直接定义name,身高,体重,现在输出一下看结果有没有 //创建乔丹对象 $jordon = new NbaPlayer("乔丹","1.98米","98公斤","公牛","23"); //输出乔丹对象 echo "名称= ".$jordon->name."<br/>"; //测试,NBA球员,没有直接定义eat方法,现在输出一下看结果有没有 echo $jordon->eat("苹果"); //证明第二个好处,只要是个人就可以调用它的eat方法 $linda = new Anchors("琳达","LD"); echo $linda->eat("苹果"); //测试第三个好处是否真实 //思路1.为女主播和NBA球员2个类分别重写eat方法 // 2.再次执行2个对象的eat方法 // 会发现一旦子类重写了父类的方法,那么就会调用子类自己的方法了,这里就大家自己写下,因为上面我已经调用了eat方法,一旦重写了,上面的结果会变 ?>
透過上述程式碼的演示,我們總結一下:
1、extends 就是繼承,透過這個關鍵字可以實現子類別繼承父類,共享父類的所有屬性和方法
2、繼承代碼的其他特點:
● 在子類構造函數中也可以直接透過$this->來存取
● 在php中extends 後面只能繼承一個類,不能用,來實現繼承多個類,否則會報錯
總結:
本文其實目標只有2個,知道繼承的定義和好處,最後我們透過程式碼相信對繼承的好處有了更深的體會和理解
以上是PHP中物件導向之繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP是一種服務器端腳本語言,用於動態網頁開發和服務器端應用程序。 1.PHP是一種解釋型語言,無需編譯,適合快速開發。 2.PHP代碼嵌入HTML中,易於網頁開發。 3.PHP處理服務器端邏輯,生成HTML輸出,支持用戶交互和數據處理。 4.PHP可與數據庫交互,處理表單提交,執行服務器端任務。

PHP在過去幾十年中塑造了網絡,並將繼續在Web開發中扮演重要角色。 1)PHP起源於1994年,因其易用性和與MySQL的無縫集成成為開發者首選。 2)其核心功能包括生成動態內容和與數據庫的集成,使得網站能夠實時更新和個性化展示。 3)PHP的廣泛應用和生態系統推動了其長期影響,但也面臨版本更新和安全性挑戰。 4)近年來的性能改進,如PHP7的發布,使其能與現代語言競爭。 5)未來,PHP需應對容器化、微服務等新挑戰,但其靈活性和活躍社區使其具備適應能力。

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHP沒有死。 1)PHP社區積極解決性能和安全問題,PHP7.x提升了性能。 2)PHP適合現代Web開發,廣泛用於大型網站。 3)PHP易學且服務器表現出色,但類型系統不如靜態語言嚴格。 4)PHP在內容管理和電商領域仍重要,生態系統不斷進化。 5)通過OPcache和APC等優化性能,使用OOP和設計模式提升代碼質量。

PHP和Python各有優劣,選擇取決於項目需求。 1)PHP適合Web開發,易學,社區資源豐富,但語法不夠現代,性能和安全性需注意。 2)Python適用於數據科學和機器學習,語法簡潔,易學,但執行速度和內存管理有瓶頸。

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具