PHP實踐之路(十)類與物件(3)
類與物件(3)
1、抽象類
a、在class前面加上abstract關鍵字類宣告一個抽象類,在方法上面加上abstract關鍵字來定義抽象方法
b、抽象類不能直接被例項化,你必須先繼承該抽象類,然後再例項化子類
c、抽象類中至少要包含一個抽象方法。如果類方法被宣告為抽象的,那麼其中就不能包括具體的功能實現
d、繼承一個抽象類的時候,子類必須實現抽象類中的所有抽象方法
e、繼承父類的抽象方法時,訪問控制必須寬鬆於父類。寬鬆程度由大到小依次為public>protected>private
實驗一下
<?php
//換行輸出
function println($var){
echo $var;
echo "<br />";
}
abstract class Father
{
abstract function fun1(); //抽象方法只宣告,不實現
abstract protected function fun2();
function fun3(){
println("I am not abstract method...");
}
private function fun4(){
println("private method...");
}
}
class Child extends Father
{
//父類中fun1預設的可見性為public,所以子類中該方法的可見性必須為public
function fun1(){
println("fun1 executed...");
}
//?此處可見性為protected時將報錯,我的php版本為php-5.4.7
function fun2(){
println("fun2 executed...");
}
}
$obj=new Child();
$obj->fun1(); //fun1 executed...
$obj->fun2(); //fun2 executed...
$obj->fun3(); //I am not abstract method...
//$obj->fun4(); //父類私有方法不能繼承
?>
按照API文件介紹抽象方法子類的可見性可與父類一樣,但這裡的fun2如果採用protected則報錯,這是為什麼呢?請知情者指教
2、介面
a、介面使用interface關鍵字宣告
b、介面可以理解為類裡所有方法都是抽象方法的抽象類,也就是所有方法都只含宣告,沒有實現(但並不用abstract來宣告方法)
c、介面中定義的所有方法都必須是public
d、使用implements關鍵字來實現介面,一個類可以實現多個介面。實現多個介面時,介面中的方法不能有重名
e、介面也可以繼承,通過使用extends操作符
接下來實驗時間
<?php
//換行輸出
function println($var){
echo $var;
echo "<br />";
}
//定義一個介面動物
interface Animal{
function walk();
function eat();
}
//定義一個介面人繼承自動物
interface Person extends Animal{
function talk();
}
//定義一個介面中國人
interface Chinese{
function work();
}
//定義一個類,實現了Person和Chinese兩個介面,必須實現兩個介面中的所有方法
class ChineseWorker implements Person,Chinese{
function walk(){
println("walking...");
}
function eat(){
println("eating...");
}
function talk(){
println("talking...");
}
function work(){
println("working in china...");
}
}
$worker=new ChineseWorker();
$worker->walk(); //walking...
$worker->eat(); //eating...
$worker->talk(); //talking...
$worker->work(); //working in china...
?>
版權宣告:本文為博主原創文章,未經博主允許不得轉載。
相關文章
- PHP實踐之路(八)類與物件(1)PHP物件
- PHP實踐之路(九)類與物件(2)PHP物件
- PHP 手冊 (類與物件) 學習筆記十:抽象類PHP物件筆記抽象
- 深入PHP物件導向、模式與實踐PHP物件模式
- PHP實踐之路(七)PHP函式PHP函式
- php.類與物件PHP物件
- 類與物件3物件
- PHP實踐之路(目錄索引)PHP索引
- PHP實踐之路(六)控制結構PHP
- PHP實踐之路(三)PHP初探資料型別PHP資料型別
- PHP實踐之路(四)PHP中常量和變數PHP變數
- 實驗3 類和物件物件
- 實驗2 類與物件物件
- PHP實踐之路(二)apache虛擬主機配置PHPApache
- PHP 函式庫精講之類與物件PHP函式物件
- PHP 無限級分類最佳實踐PHP
- PHP 手冊 (類與物件) 學習筆記三:類常量PHP物件筆記
- PHP 手冊 (類與物件) 學習筆記七:物件繼承PHP物件筆記繼承
- PHP 物件導向 (十)TraitsPHP物件AI
- PHP 物件導向 final類與final方法PHP物件
- JavaScript 建立物件模式與最佳實踐JavaScript物件模式
- 物件與類物件
- 類與物件物件
- ⦁ 類與物件物件
- Python3基礎18——類與物件Python物件
- 測試與流量博弈的實踐之路 - 王勝
- PHP 與 UTF-8 的最佳實踐PHP
- PHP 與 UTF-8的最佳實踐PHP
- OC:類與物件☀️物件
- Swift:類與物件Swift物件
- PHP 物件導向 (十一)反射類PHP物件反射
- PHP 手冊 (類與物件) 學習筆記二:屬性PHP物件筆記
- JavaScript 建立物件: 方法一覽與最佳實踐JavaScript物件
- Java物件導向——類與物件Java物件
- rabbitmq 學習與實踐分享(3)MQ
- PHP 手冊 (類與物件) 學習筆記四:類的自動載入PHP物件筆記
- Javascript 類與靜態類的實現-js物件導向JavaScriptJS物件
- PHP最佳實踐PHP