1、繼承
定義:繼承是從一個基類得到一個或多個類的機制。
關鍵字:extends
注: PHP只支持單繼承,不支持方法重載。
2、例子
class Computer{
public $_name = '聯想';
public function _run(){
echo '聯想在運行';
}
}
class NoteComputer extends Computer{
}
$notecomputer = new NoteComputer();
echo $notecomputer->_name;
$notecomputer->_run();
3、重寫
class Computer{
public $_name = '聯想';
public function _run(){
echo '聯想在運行';
}
}
class NoteComputer extends Computer{
//我不需要父類的字段和方法,可以採用重寫的方法覆蓋
public $_name = 'DELL';
public function _run(){
echo 'DELL 在運行。';
}
}
$notecomputer = new NoteComputer();
echo $notecomputer->_name;
$notecomputer->_run();
4、protected
父類私有化時,無法被子類繼承,這個時候應該用受保護的(protected )修飾符。
class Computer{
protected $_name = '聯想';
protected function _run(){
echo '聯想在運行';
}
}
class NoteComputer extends Computer{
public function getTop(){
echo $this->_name;
echo $this->_run();
}
}
$notecomputer = new NoteComputer();
$notecomputer->getTop();
5、重寫調用父類方法
子類已經覆蓋父類字段和方法,還想調用父類該怎麼辦?
class Computer{
public $_name = '聯想'; //字段無法調用
public function _run(){
echo '聯想在運行';
}
}
class NoteComputer extends Computer{
public $_name = 'DELL';
public function _run(){
echo 'DELL 在運行。';
//調用父類的兩種方法
echo Computer::_run();
echo parent::_run();
}
}
$notecomputer = new NoteComputer();
echo $notecomputer->_name;
$notecomputer->_run();
6、final關鍵字
//final 如果加在類前 表示不能被繼承
final class Computer{
}
class NoteComputer extends Computer{
}
class Computer{
//final 加在方法前,表示不能被重寫
final public function _run()
}
class NoteComputer extends Computer{
}