新聞中心

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


咨詢
建站咨詢
