PHP實踐之路(十)類與物件(3)

2021-06-17 01:21:16 字數 1672 閱讀 7636

php實踐之路(目錄索引)

a、在class前面加上abstract關鍵字類宣告乙個抽象類,在方法上面加上abstract關鍵字來定義抽象方法

b、抽象類不能直接被例項化,你必須先繼承該抽象類,然後再例項化子類

c、抽象類中至少要包含乙個抽象方法。如果類方法被宣告為抽象的,那麼其中就不能包括具體的功能實現

d、繼承乙個抽象類的時候,子類必須實現抽象類中的所有抽象方法

e、繼承父類的抽象方法時,訪問控制必須寬鬆於父類。寬鬆程度由大到小依次為public>protected>private

實驗一下

<?php

//換行輸出

function println($var)

abstract class father

private function fun4()

}class child extends father

//?此處可見性為protected時將報錯,我的php版本為php-5.4.7

function fun2()

}$obj=new child();

$obj->fun1(); //fun1 executed...

$obj->fun2(); //fun2 executed...

$obj->fun3(); //i am not abstract method...

//$obj->fun4(); //父類私有方法不能繼承

?>

按照api文件介紹抽象方法子類的可見性可與父類一樣,但這裡的fun2如果採用protected則報錯,這是為什麼呢?請知情者指教

a、介面使用inte***ce關鍵字宣告

b、介面可以理解為類裡所有方法都是抽象方法的抽象類,也就是所有方法都只含宣告,沒有實現(但並不用abstract來宣告方法)

c、介面中定義的所有方法都必須是public

d、使用implements關鍵字來實現介面,乙個類可以實現多個介面。實現多個介面時,介面中的方法不能有重名

e、介面也可以繼承,通過使用extends操作符

接下來實驗時間

<?php

//換行輸出

function println($var)

//定義乙個介面動物

inte***ce animal

//定義乙個介面人繼承自動物

inte***ce person extends animal

//定義乙個介面中國人

inte***ce chinese

//定義乙個類,實現了person和chinese兩個介面,必須實現兩個介面中的所有方法

class chineseworker implements person,chinese

function eat()

function talk()

function work()

}$worker=new chineseworker();

$worker->walk(); //walking...

$worker->eat(); //eating...

$worker->talk(); //talking...

$worker->work(); //working in china...

?>

PHP實踐之路(八)類與物件(1)

php實踐之路 目錄索引 類與物件的知識點較多,我們這裡將分幾篇文章來分別闡述 a 類的定義以class為關鍵字,類名可以是任何非php保留字的名字。類的實體內容定義在一對花括號內部,模型如下 class 類名b 偽變數 this 可以在當乙個方法在物件內部呼叫時使用。this 是乙個到呼叫物件的引...

PHP類與物件

php 5完全重寫了物件模型以得到更佳效能和更多特性,具有完整的物件模型。php 對待物件的方式與引用和控制代碼相同,即每個變數都持有物件的引用,而不是整個物件的拷貝。我們都知道php物件賦值預設情況下是通過引用傳遞的,但這並不完全正確。比如 classa a newa b a 此時,a,b是同乙個...

PHP類與物件

建立乙個類 class student 歌 public function run public function showself 我的成績是 this sing 成都 class teacher public function dance 例項化物件 student1 new student e...