抽象類:一個類中至少有一個方法是抽象的,我們稱之爲抽象類。
要求:
- 1.一個類中至少有一個抽象方法
- 2.抽象方法不允許有{}
- 3.抽象方法前面必須加abstract
類前面加abstract
<?php
abstract class Human {
public abstract function getInfo () {
echo '我是getInfo';
}
}
?>
定義了一個Human的抽象類,抽象類中有個抽象方法,執行發現報錯
Fatal error: Abstract function Human::getInfo() cannot contain body
抽象方法不能有正文部分(沒有方法體),需要去掉花括號
<?php
abstract class Human {
public abstract function getUserInfo ();
public abstract function getWalletInfo ();
}
class Student extends Human {
public function getUserInfo () {
echo 'getinfo';
}
public function getWalletInfo () {
echo 'getwalletInfo';
}
}
$Tom = new Student();
$Tom -> getUserInfo();
$Tom -> getWalletInfo ();
?>
1.抽象類不能被實例化,只能被繼承。
2.繼承的派生類當中要把所有抽象方法重載才能實例化
abstract class Human {
public abstract function getUserInfo ();
public abstract function getWalletInfo ();
}
class Student extends Human {
public function getUserInfo () {
echo 'getinfo';
}
// public function getWalletInfo () {
// echo 'getwalletInfo';
// }
}
$Tom = new Student();
比如此時派生類種少寫了一個getWalletInfo() 方法,就導致new 失敗
抽象類的意義:派生類繼承抽象類的時候,必須要用抽象類的命名規則去建立方法,否則不允許派生類實例化,其實是申明瞭一種規範,達到規範方法的目的。