PHP面向物件的理解(1)
PHP中虛擬函式的理解:
相比其他語言,如C++,PHP語言有很多不同之處。
看個例子:
<?php // 定義父類 class P { public function name(){ echo "P::name() is called. \n"; } public function getName1(){ self::name(); echo "P::getName1 is called. \n"; } public function getName2(){ $this->name(); echo "P::getName2() is called. \n"; } }
// 定義子類,繼承父類P
class S extends P{
public function name(){
echo "S::name() is called. \n";
}
}
測試方法如下:
$s = new S;
$s->getName1();
echo '<br/>';
echo '<br/>';
echo '<br/>';
$s->getName2();
>>>那麼,這將會輸出什麼呢?
在C++中,有virtual關鍵字定義類中的函式為虛擬函式。如果父類定義了 name () 函式為虛擬函式,並且在子類中被覆蓋,那麼將會呼叫子類的 name() 方法;否則呼叫父類的方法。
PHP中沒有virtual關鍵字,靠的是 self 和 $this 關鍵字實現虛擬函式的功能。self 關鍵字呼叫的是父類的方法,$this 呼叫的是子類的方法。
那麼這裡將輸出:
P::name() is called.
P::getName1 is called.
S::name() is called.
P::getName2() is called.
>>>如果 一個G類繼承S類,那麼會怎麼樣呢?
class G extends S(){ public function name(){ echo "G::name() is called.\n"; } } $g = new G; $g->getName1(); echo '<br/>'; echo '<br/>'; $g->getName2(); 那麼這裡將輸出:這裡不會呼叫S中間類的 name() 方法。 P::name() is called. P::getName1 is called. G::name() is called. P::getName2() is called. >>> 如果子類G想使用S類的 name() 方法,可以在S類中重寫P類的 getName 方法。 // 定義子類,繼承父類P class S extends P{ public function name(){ echo "S::name() is called. \n"; } public function getName1(){ slef::name(); echo "S::getName1() is called. \n"; } }
相關推薦
PHP面向物件程式設計(1)基礎
一、面向物件OOP(Oriented Object Programming) 面向過程的程式設計 將要實現的功能描述為一個從一開始到結束的連續的“步驟(過程)”。 一次逐步完成這些步驟。如果步驟比較大,又可以將該步驟細分為子步驟,以此類推。 程式從頭開
熟練使用Lua(四)面向物件:基於table的面向物件實現(1)
轉:https://www.cnblogs.com/yao2yaoblog/p/6433553.html c++和java語言機制中本身帶有面向物件的內容,而lua設計的思想是超程式設計,沒有面向物件的實現。 但是利用lua的元表(matetable)機制,可以實現面向物件。要講清楚怎樣
淺談PHP面向物件程式設計(九)
9.0 設計模式 在編寫程式時經常會遇到一此典型的問題或需要完成某種特定需求,設計模式就是針對這些問題和需求,在大量的實踐中總結和理論化之後優選的程式碼結構程式設計風格,以及解決問題的思考方式。 設計模式就像是經典的棋譜。不同的棋局,使用不同的棋諧,免得自己再去思考和模索。本節將針對PHP應用程式
淺談PHP面向物件程式設計(五)
5.0 繼承 5.1 繼承的概念 在現實生活中,繼承一般指的是子女繼承父輩的財產。在程式中,繼承描述的是事物之間的所屬關係,通過繼承可以使許多事物之間形成一種關係體系 。 例如貓和狗都屬於動物,程式中便可以描述為貓和
淺談PHP面向物件程式設計(七)
7.0 抽象類與介面 當定義一個類時,常常需要定義一些方法來描述該類的行為特徵、但有時這些方法的實現方式是無法確定的,此時就可以使用抽象類和介面。 抽象類和介面用於提高程式的靈活性、抽象類是一種特殊的類,而介面又是一種待殊的抽象類。 接下來本節將針對抽象類和介面進行詳細講解。 7.
淺談PHP面向物件程式設計(六)
6.0 自動載入及魔術方法 6.1 自動載入 在PHP開發過程中,如果希望從外部引入一個class.通常會使用incluae和requre方法把定義這個class的檔案包含進來。但是,在大型的開發專案中,這麼做會產生大量的require或者include方法的使用。這樣不僅
淺談PHP面向物件程式設計(二)
和一些面向物件的語言有所不同,PHP並不是一種純面向物件的語言,包PIP它支援面向物件的程式設計,並可以用於開發大型的商業程式。因此學好面向物件輸程對PHP程式設計師來說也是至關重要的。本章並針對面向物件程式設計在PIP語言中的使用進行詳細講解。 2.1 面向物件概述 面向物件是一種符
淺談PHP面向物件程式設計(一)
傳統的面向過程 將要完成的工作,分作若干個步驟,或再細分為子步驟,然後後步驟從前往後一步一步完成,最初達致目標。 現代的面向物件 將要完成的工作拆分為“一個一個物件”的任務(功能),每個物件獨自完成自己的任務,任務之間的連結通過“呼叫”來實現,最終也完成了整體的工
【軟考】——面向物件技術(1)
面向物件???——》一種具有構造繼承性、 封裝性和多型的程式設計語言族的命名; ???——》一種程式設計風格; 面向物件???——》物件 + 分類 + 繼承 +
JAVA 面向物件基礎(1)
歡迎大佬們指正批評。 方法 1.1 各種語言都有方法的概念(有的稱為函式或面向過程) 1.1.1)封裝一段特定的業務邏輯或功能; 1.1.2)方法需要儘可能的獨立; 1.1.3)方法可以被反覆呼叫多次 1.1.4)減少程式碼的重複,有利於程式碼的維護,有利於團隊協作。 1.2 返
Js面向物件隨筆(1)
1、物件的概念:在ECMAScript-262中,物件被定義為“無序屬性的集合,其屬性可以包含基本值,物件或者函式,那麼在JavaScript中,物件也無非就是由一些無序的Key-Value對組成,其中Value可以是基本值,物件或者函式”。 2、我們常用Object.pr
PHP面向物件的理解(1)
PHP中虛擬函式的理解: 相比其他語言,如C++,PHP語言有很多不同之處。 看個例子: <?php // 定義父類 class P { public function name(){ echo "P::name() is called.
淺談對Js面向物件的理解(1)
面向物件的語言有一個標誌,那就是它們都有類的概念,通過類來建立任意多個具有相同屬性和方法的物件。它是一種程式開發的方法,它將物件作為程式的基本單元,將邏輯和資料封裝其中,以提高程式碼的靈活性、重用性和擴充套件性。物件是把資料及對資料的操作方法放在一起,作為一個相互依存的整體。簡單的
理解繼承(一):JS面向物件程式設計(封裝)
依然是向阮前輩(阮一峰)學習的部落格原文 學了這一階段和峰大神的幾篇文章,打算下一階段滾回去把指標好好學一下 JS 中,萬物皆物件,但是它又不是一門真正的面向物件程式語言。 那如果我們要把“屬性(prototype)”和方法(“method”)封裝成一個物
PHP函數初識(1)
function private 區分大小寫 關鍵字 public 函數php函數的定義方式:修飾符 function 函數名(參數1,參數2...){ 執行體.}修飾符
PHP面向對象(一)
集合 命名 相同 get 實體 實例 3.1 接口 pri public 公有的:本類,子類,外部對象都可以調用protected 受保護的:本類 子類,可以執行,外部對象不可以調用private 私有的:只能本類執行,子類與外部對象都不可調用面向對象編程的三大特點 1
面向對象(1)
訪問 架構 class 模塊 工程 min 世紀 啟動程序 內部數據 面向對象 什麽是面向對象? 面向對象編程(Object Oriented Programming, OOP, 面向對象程序設計)是一種計算機編程架構,OOP的一條基本原則是計算機程 序是由單個能夠起到子
Faster rcnn代碼理解(1)
感覺 組織 等我 ont 包含 還要 定義 fig 訓練數據 這段時間看了不少論文,回頭看看,感覺還是有必要將Faster rcnn的源碼理解一下,畢竟後來很多方法都和它有相近之處,同時理解該框架也有助於以後自己修改和編寫自己的框架。好的開始吧~ 這裏我們跟著Faster
php面向對象(四)
直接 自動 bsp all interface star 自己 參數 ssr php中的重載技術 通常面向對象語言的重載技術 在一個類中有多個同名方法,每個方法的參數不同,這種現象稱為重載。 參數的不同:個數不同,類型不同,順序不同。 在php中,一個類中
python socket 的理解(1)
網絡 完成 ron bsp 接收數據 技術分享 檢測 cnblogs 無數據 前言 socket的用法簡單,但裏面的概念有點模糊,記錄自己本人的一點理解。 socket層結構圖 註意,從此圖中看出socket處於tcp和應用層之間。那麽它代表啥意思呢?簡明的說,數