先看乙個例子:
複製**
**如下:
<?php
class pupil
public function testing() }
class graduate
public function testing() }
?>
從上面的例子可以看出,當多個類有很多共同屬性和方法時,**的復用性不高,**冗餘,思考css中的處理方法
解決方法 :繼承
複製**
**如下:
<?php
class students
public function showinfo() }
class pupil extends students }
class graduate extends students }
$stu1=new pupil('張三',20);
$stu1->showinfo();
echo '
';
$stu1->testing();
?>
從上面可以看出,繼承就是乙個子類(subclass)通過 extends 父類 把父類(baseclass)中的public 和 protected 的屬性和方法繼續下來,不能繼承private屬性和方法
語法結構:
class 父類名{}
class 子類名 extends 父類名{}
細節:
1、乙個子類只能繼承乙個父類(這裡指直接繼承);如果希望繼承多個類的屬性和方法,可以使用多層繼承
例: 複製**
**如下:
<?php
class a
class b extends a
class c extends b{}
$p=new c();
echo $p->name;//這裡會輸出aaa
?>
2、在建立某個子類物件時,預設情況下不會自動呼叫其父類的建構函式
例: class a
} class b extends a
} $b=new b();//這裡會優先輸出b中的構造方法,如果b中沒有構造方法才會輸出a中的
3、在子類中如果需要訪問父類的方法(構造方法、成員方法 方法的修飾符為protected或private),那麼可以使用 父類::方法名 或者 parent::方法名 來完成【這裡parent和以前提到的self都均為小寫,大寫報錯】
class a
} class b extends a
} $b=new b();
5、如果乙個子類(派生類)的方法與父類的方法完全一樣時(public,protected),我們稱為方法覆蓋或方法重寫(override),看下面的多型性
php物件導向 繼承
1 繼承是從乙個基類或者父類得到乙個或者多個派生類,也叫作子類的機制。2 建立繼承樹首先找到現有基類元素不適合放在一起的,或者不需要特殊處理的,一般化。3 子類預設繼承父類所有的public和protected方法,不繼承private方法或屬性 構造方法與繼承 1 構造方法需要傳參給父類方法。2 ...
PHP物件導向 繼承
繼承是指子類可以繼承乙個或多個父類的屬性和方法,並可以重寫或新增新的屬性或方法。通過繼承已有的類,可以逐步擴充類的功能,提高 的可重用性。關鍵字 extends php中使用關鍵字extends可實現類的繼承 語法格式 class 子類名 extends 父類名 注意 php不支援多重繼承,即乙個子...
PHP物件導向繼承(二)
原以為多型是乙個什麼樣複雜的概念,其實很簡單。多型就是指方法的重寫,定義乙個父類 介面 各個子類不同,但必須有介面所定義的方法,因此,這些應用統一介面的類就都有介面中定義的規範,這樣就滿足了介面所定的要求。物件序列化 序列化 1 將物件轉成字串 不用看懂 序列化 2 將字串轉會物件 反序列化 注意 ...