继承
- 使用关键字 extends 来继承一个类,PHP 不支持多继承
- 语法:
class Child extends Parent { // 代码部分 }
- 实例:
<?php
class Site {
// 成员变量
var $url;
var $title;
//成员函数
function setUrl($par){
$this->url = $par; //变量 $this 代表自身的对象
}
function getUrl(){
echo $this->url;
echo "<br>";
}
function setTitle($par){
$this->title = $par;
}
function getTtile(){
echo $this->title;
echo "<br>";
}
}
//继承
class Child_Site extend Site{
var $category;
function setCate($par){
$this->category = $par;
}
function getCate(){
echo $this->category . PHP_EOL; //PHP_EOL 换行符
}
}
?>
方法重写
- 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
- 实例:
<?php
class Site {
// 成员变量
var $url;
var $title;
//成员函数
function setUrl($par){
$this->url = $par; //变量 $this 代表自身的对象
}
function getUrl(){
echo $this->url;
echo "<br>";
}
function setTitle($par){
$this->title = $par;
}
function getTtile(){
echo $this->title;
echo "<br>";
}
}
//继承
class Child_Site extend Site{
// 覆盖写
function getTtile(){
}
function setTitle(){
}
}
?>
调用父类构造方法
- PHP 不会在子类的构造方法中自动的调用父类的构造方法
- 要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct()
- 实例:
<?php
class BaseClass {
function __construct() {
print "BaseClass 类中构造方法" . PHP_EOL;
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct(); // 子类构造方法不能自动调用父类的构造方法
print "SubClass 类中构造方法" . PHP_EOL;
}
}
class OtherSubClass extends BaseClass {
// 继承 BaseClass 的构造方法
}
// 调用 BaseClass 构造方法
$obj = new BaseClass();
// 调用 BaseClass、SubClass 构造方法
$obj = new SubClass();
// 调用 BaseClass 构造方法
$obj = new OtherSubClass();
?>
运行截图