出現原因:父類的不確定性
爲什麼設計抽象類這個技術?
1.在實際開發中,我們可能有這樣一種類,是其他類的父類,但是它本身並不需要實例化,主要用途用於讓子類來繼承,這樣達到代碼複用,同時利於項目設計者,設計類。
2.關鍵字:abstract
3.基本用法:
abstract class 類名
{//方法
//屬性
abstract 修飾符 function 函數名(參數列表);
/*abstract 修飾符 function 函數名(參數列表)
{
echo " 這個寫法是錯的!";//因爲多寫了方法體
}
*/
}
abstract修飾一個類,這個類叫做抽象類;
abstract修飾一個方法,這個類叫做抽象方法【如果是抽象方法,不能有方法體】;
4.注意事項:
a.抽象類可以沒有抽象方法,同時還可以有實現了的方法(完整的函數);
b.一旦一個方法聲明abstract方法,必須聲明類爲abstract類,即abstract類名對應abstract方法;
c.如果一個類繼承某個抽象類,則它必須繼承該抽象類的所有抽象方法,除非它爲抽象類;
案例1:
<?php
abstract class Animal //父類
{
public $name;
protected $price;
abstractpublic function cry();
//沒有方法體,這個方法主要爲了讓子類去實現
}
class Dog extends Animal //子類
{
public function cry()//子類繼承父類方法
{
echo "小狗汪汪叫!";
}
}
$dog1=new Dog();
$dog1->cry();//
?>