繼承 為物件導向程式設計的特性之一,子類別 (subclass) 可以承接父類別 (superclass) 的 public 或 protected 成員 ,這兩者間就具有共通的 public 或 protected 成員。
clas 類名 extends 父類名{
- 書寫子類獨有的方法和書寫
}
<?php
//如果類前加上final關鍵字 則 該類不能被繼承。此代碼運行會報錯,
//報錯有兩點:1. Animal類被Bear 類繼承。 2. Bear類中重載Animal類的方法。這兩個都被final修飾,所以不能重載也不能繼承。
final class Animal
{
//成員屬性
public $name = 'Animal in the World';
public $sex;
//成員方法
final function life()
{
echo 'We are family~';
}
function sing()
{
echo 'Voice of Everything';
}
}
//騾子類
class Bear extends Animal
{
//成員屬性
//成員方法
function life() //失敗:Method 'Bear::life()' cannot override final method 'Animal::life()'
{
echo '熊熊熊熊';
}
}
//實例化對象
$one = new Bear;
var_dump($one);
$one->sing();
$one->life();
訪問類型控制,定義類的屬性public(public是修飾符,共有三個,是public,protected,private)
如果沒有加上關鍵字,則PHP預設就當他是public的,屬性則必須要加上修飾符不然會報錯(如果用var關鍵字宣告的屬性則預設會當做public)。
在類中使用static聲明的成員都是靜態成員
靜態成員的特徵是:不歸物件所有,而是歸類所有
1. static關鍵字,可以修飾成員屬性、成員方法
2. static聲明的成員都是歸類所有,而不是歸物件所有,在沒有物件的情況下,可以通過類來訪問
3. 能聲明靜態的成員就聲明靜態的成員(效率高)
4. 具有動態成員的方法不可以聲明靜態成員方法。
靜態成員訪問
類的內部
類名::$靜態成員屬性名
self::$靜態成員屬性名
類名::靜態成員方法名();
self::靜態成員方法名();
類的外部
類名::$靜態成員屬性名
類名:靜態成員方法名()
物件->靜態成員方法名()(一般不用)
魔術方法 __toString()
魔術方法 __call()