新聞中心

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計、成都網(wǎng)站制作、克拉瑪依網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、克拉瑪依網(wǎng)絡(luò)營銷、克拉瑪依企業(yè)策劃、克拉瑪依品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供克拉瑪依建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
子類可以增加父類之外的新功能,因此也可以將子類稱為父類的“擴展”。此外,子類還可以繼承父類的構(gòu)造函數(shù),當子類被實例化時,php 會先在子類中查找構(gòu)造函數(shù)。如果子類有自己的構(gòu)造函數(shù),PHP 會先調(diào)用子類中的構(gòu)造函數(shù)。當子類中沒有時,PHP 則會去調(diào)用父類中的構(gòu)造函數(shù)。
在 PHP 中,類的繼承需要通過 extends 關(guān)鍵字來實現(xiàn)。語法格式如下所示:
class 子類名 extends 父類名{
... ...
}
在 C++ 中,一個子類可以繼承一個基類,也可以繼承多個基類。繼承一個基類稱為單繼承;繼承多個基類稱為多繼承。但在 PHP 中沒有多繼承,只能使用單繼承模式。也就是說,一個類只能直接從另一個類中繼承數(shù)據(jù)。但一個類可以有多個子類。
通過前面的學(xué)習(xí)我們知道,類中的成員屬性和方法都需要使用訪問權(quán)限修飾符來修飾,這是 PHP 面向?qū)ο缶幊讨械囊粋€重要特性。不同訪問修飾符的作用及其之間的區(qū)別如下表所示:
| public(默認) | private | protected | |
|---|---|---|---|
| 同一個類中訪問 | √ | √ | √ |
| 在子類中訪問 | √ | √ | |
| 在類的外部訪問 | √ |
1、繼承 public 成員
類的成員都有不同的訪問權(quán)限,由訪問控制關(guān)鍵字來控制的。在 PHP 中,父類所有使用 public 修飾的成員均可以被子類繼承。
【示例】定義一個基類,使用另一類來繼承這個基類,同時在嘗試使用子類調(diào)用基類中的成員方法。
';
}
public function demo(){
echo '基類中的成員方法
';
}
}
class ClassOne extends Website{
}
class ClassTwo extends Website{
public function __construct(){
echo '------子類中的構(gòu)造函數(shù)------
';
}
}
$object = new ClassOne();
$object -> demo();
$object2 = new ClassTwo();
$object2 -> demo();
?>
運行結(jié)果如下:
------基類中的構(gòu)造函數(shù)------
基類中的成員方法
------子類中的構(gòu)造函數(shù)------
基類中的成員方法
2、繼承 protected 成員
很多情況下有些類繼承的屬性是不想在類外部被訪問的,這時就可以把這個成員聲明為一個保護成員,也就使用 protected 修飾這個成員。受保護的成員不可以在類外部訪問到,但是可以在子類的內(nèi)部訪問,也是就說我們可以在子類設(shè)置一個成員函數(shù)來訪問這個受保護成員。
【示例】將上面示例的代碼略作調(diào)整,演示類中 protected 成員的繼承情況。
';
}
protected function demo(){
echo '基類中的成員方法
';
}
}
class ClassOne extends Website{
}
class ClassTwo extends Website{
public function __construct(){
echo '------子類中的構(gòu)造函數(shù)------
';
}
public function test(){
$this -> demo();
}
}
$object = new ClassOne();
// $object -> demo(); // 在子類中調(diào)用父類使用 protected 修飾的成員方法會報錯
$object2 = new ClassTwo();
$object2 -> test();
?>
運行結(jié)果如下:
------基類中的構(gòu)造函數(shù)------
------子類中的構(gòu)造函數(shù)------
基類中的成員方法
在子類中調(diào)用父類使用 protected 修飾的成員方法會報錯,如果去掉上面代碼中第 26 行的注釋,程序會報錯并停止運行,如下所示:
Fatal error: Uncaught Error: Call to protected method Website::demo() from context '' ··· ···
3、private 成員
類中使用 private 修飾的成員被稱為私有成員。父類中的私有成員不會被子類繼承,因此不能被子類訪問到,下面來看一個示例。
';
}
}
class ClassOne extends Website{
public function test(){
$this -> demo();
}
}
$object = new ClassOne();
$object -> test();
?>
運行結(jié)果如下:
Fatal error: Uncaught Error: Call to private method Website::demo() from context 'ClassOne' ··· ···
在子類中調(diào)用父類中使用 private 關(guān)鍵字修飾的成員時,程序會報錯并終止運行。
文章題目:PHPextends:繼承
文章分享:http://m.fisionsoft.com.cn/article/cocdohi.html


咨詢
建站咨詢
