程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Php面向對象 – 繼承和重寫

Php面向對象 – 繼承和重寫

編輯:關於PHP編程

Php面向對象 – 繼承和重寫


Php面向對象 – 繼承和重寫

繼承:

php中,通過在類上,使用特殊的操作達到目的。

通過在定義類時,利用extends來指明當前類對象繼承那個類的對象。

例子:

class C

{

public $p_c = “value c”;

}

class D extends C

{

public $p_d = “value d”;

}

$o = new D;

var_dump($o->p_c)

var_dump($o->p_d)

輸出:string(7) “value c” string(7)“value d”

繼承,指的是兩個對象之間,那麼哪有這兩個對象?

Instanceof 操作符 (判斷對象是否是某類的實例)

var_dump($o instanceof D);

輸出:bool(true)

var_dump($o instanceof C);

輸出:bool(true)

因此,一個對象即是當前類的實例,也是該類所繼承類的實例。

Class D extends C

D類對象,繼承自C類對象。

父類:被繼承的類,C類

子類:需要繼承的類,D類

基類:C類是D類的基類

擴展類:D類是C類的擴展類。

重要:

php是單繼承。

繼承的目的:

在於擴展,或者使用某類已經存在的操作和數據。

重寫 override

繼承時,如果發生成員沖突,php的處理方式,為重寫。就是子類同名成員覆蓋父類同名成員。不能看到父類的同名成員。

例子:

1.

class P

{

public $name = ‘P’;

}

class C extends P

{

public $name = “C”;

}

$o = new C;

echo $o->name;

2.

class P

{

public $name = ‘P’;

public function sayName()

{

echo‘parent::name’,$this->name;

}

}

class C extends P

{

public $name = “C”;

public function sayName()

{

echo‘self::name’,$this->name;

}

}

$o = new C;

$o->sayName();

輸出:self::name C

構造方法重寫:

例子:

class P

{

public__construct()

{

echo“parent::construct”;

}

}

class D extends P

{

public__construct()

{

echo“self::construct”;

}

}

$o =new D;

輸出:self::construct

如果需要,強制執行被重寫的父類方法,可以顯示的使用父類來調用相應的父類方法即可:

例子:

class P

{

public__construct()

{

echo“parent::construct”;

}

}

class D extends P

{

public__construct()

{

P::__construct();

echo“self::construct”;

}

}

$o =new D;

輸出:parent::construct self::construct

可以使用一個關鍵字,在類內,代替當前的父類

parent關鍵字

例子:

class P

{

public__construct()

{

echo“parent::construct”;

}

}

class D extends P

{

public__construct()

{

parent::__construct();

echo“self::construct”;

}

}

$o =new D;

如果說父類的構造需要相應的參數,則需要在調用時,將父類構造方法需要的參數傳遞到方法內。

例子:

class Goods

{

public $goods_name ;

public $goods_price;

public function __construct($name,$price)

{

$this->goods_name= $name;

$this->goods_price= $price;

}

}

class GoodsBook extends Goods

{

public $pages;

public function __construct($name,$price,$pages)

{

parent::__construct($name,$price);

$this->pages= $pages;

}

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved