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 手冊 (類與物件) 學習筆記十:抽象類PHP物件筆記抽象
- php.類與物件PHP物件
- 類與物件3物件
- 實驗3 類和物件物件
- 實驗2 類與物件物件
- PHP 物件導向 (十)TraitsPHP物件AI
- PHP 函式庫精講之類與物件PHP函式物件
- PHP 手冊 (類與物件) 學習筆記三:類常量PHP物件筆記
- PHP 無限級分類最佳實踐PHP
- PHP 手冊 (類與物件) 學習筆記七:物件繼承PHP物件筆記繼承
- Python3基礎18——類與物件Python物件
- 物件與類物件
- ⦁ 類與物件物件
- 類與物件物件
- PHP 物件導向 (十一)反射類PHP物件反射
- PHP 手冊 (類與物件) 學習筆記二:屬性PHP物件筆記
- PHP 與 UTF-8 的最佳實踐PHP
- PHP 手冊 (類與物件) 學習筆記四:類的自動載入PHP物件筆記
- Java物件導向——類與物件Java物件
- iOS開發·runtime原理與實踐: 基本知識篇(類,超類,元類,super_class,isa,物件,方法,SEL,IMP)iOS物件
- 測試與流量博弈的實踐之路 - 王勝
- PHP 手冊 (類與物件) 學習筆記一:基本概念PHP物件筆記
- PHP物件導向(OOP)—-分頁類PHP物件OOP
- PHP 物件導向 (二)類屬性PHP物件
- PHP 底層原理之類和物件PHP物件
- OpenCV探索之路(二十八):Bag of Features(BoF)影像分類實踐OpenCV
- 3.java類和物件Java物件
- Java-物件與類Java物件
- Java - 11 類與物件Java物件
- 類與物件的概念物件
- 類與物件的建立物件
- python物件導向思想(類與物件)Python物件
- rabbitmq 學習與實踐分享(3)MQ
- PHP中物件導向的分頁類PHP物件
- 實驗3 類和物件_基礎程式設計2物件程式設計
- 實驗3 類和物件 基礎程式設計2物件程式設計
- 實驗3 類和物件——基礎程式設計2物件程式設計
- 乾貨:PHP與大資料開發實踐PHP大資料
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值