為什麼需要設計抽象類?
在實際開發中,可能有這樣一種類:是其它類的父類,但其本身並不需要實例化,主要用途是用於讓子類來繼承。這樣可以達到代碼復用的目的,同時有利於項目設計者來設計類。
1、抽象類的格式:
abstract class 類名{
abstract 修飾符 function 函數名(參數列表);
}
<?php
abstract class Animal{
public $name;
protected $age;
//這個方法沒有方法體,主要是為了讓子類去實現
abstract public function cry();
}
class Cat extends Animal{
public function cry(){
echo "貓正在叫!";
}
}
$cat1=new Cat();
$cat1->cry();
?>
2、用abstract關鍵字來修飾一個類,這個類就是抽象類;用abstract關鍵字來修飾一個方法,這個方法就是抽象方法,該方法就不能有方法體。
3、抽象類不能被實例化
4、抽象類不一定要包含abstract方法,即,抽象類可以沒有abstract方法。
5、一旦類包含了abstract方法,則這個類必須聲明為abstract
6、抽象方法不能有函數體
7、抽象類可以沒有抽象方法,同時可以有實現了的方法
<?php
abstract class Animal{
public $name="www.bianceng.cn";
protected $age;
//這個方法沒有方法體,主要是為了讓子類去實現
abstract public function cry();
//抽象類中實現了的方法
public function getName(){
return $this->name;
}
}
class Cat extends Animal{
public function cry(){
echo "貓正在叫!";
}
}
$cat1=new Cat();
$cat1->cry();
echo "<br />".$cat1->getName();
?>
8、如果一個類繼承了某個抽象類,則它必須實現該抽象類的所有抽象方法,除非它自己也聲明為抽象類。
<?php
//這是一個抽象類
abstract class A{
abstract function test();
}
class B extends A{
function test(){ //此方法如果不實現,將會報錯
echo "www.bianceng.cn";
}
}
echo "good";
?>
URL: http://www.bianceng.cn/webkf/PHP/201612/50479.htm