自动加载、类属性、类继承、父类重载的方法
实例
/*
* 类的继承与方法重载
*
* 如果才能正常访问这些属性呢?
* 有二个方案来实现
* 1.将父类Computer中的相关属性的访问控制全部设置为public
* 2.将父类Computer中的相关属性的访问控制全部设置为protected,并在子类Notebook中创建查询器
* 我们采用第二种方案
*
*/
//使用自动加载器来加载类:简写版
spl_autoload_register(function($className){
require './class/'.$className.'.php';
});
//加入新的参数
$notebook = new Notebook('小米','笔记本','XM-001','黑色','5999',true);
echo '品牌: '.$notebook->brand.'
';
echo '类型:'.$notebook->type.'
';
echo '型号:'.$notebook->model.'
';
echo '颜色:'.$notebook->colour.'
';
// 子类中新增的功能
echo '价格:'.$notebook->price.'元
';
echo '今日优惠:'.($notebook->activity ? 300 : 0 ).'元
';
// 通过方法进行重载新的功能,当访问call()方法名时,会输出子类定义好的功能
echo '操作系统: '.$notebook->gem().'
';
echo '功能特点: '.$notebook->call().'
';
运行实例 »
点击 "运行实例" 按钮查看在线实例
父类
/**
* 电脑类:computer——父类
* protected:受保护
*/
class Computer
{
protected $brand;
protected $type;
protected $model;
protected $colour;
// 构造方法
public function __construct($brand,$type,$model,$colour)
{
$this->brand = $brand;
$this->type = $type;
$this->model = $model;
$this->colour = $colour;
}
public function call()
{
return '轻薄';
}
}运行实例 »
点击 "运行实例" 按钮查看在线实例
子类—继承父类中所有私有和受保护的功能
/**
* 笔记本:Notebook
* 子类:Notebook 继承 父类:Computer 功能
* 1.类继承:在子类上使用关键字extends
* 2.php不支持多继承,仅允许从一个父类上继承
* 3.父类又叫超类或基类,通常只提供一些最基本的功能
* 4.子类又叫派生类,可以继承父类中的公共和受保护的成员
*
* 子类的功能是用来扩展或重载父类的某些功能
*/
class Notebook extends Computer
{
//1.无需任何代码,父类Computer中的所有公共和受保护的成员,在当前类中可以直接访问
//创建查询器,实现外部访问
public function __get($brand)
{
return $this->$brand;
}
//1.对父类属性进行扩展,增加新的特征,如果不在子类中使用,推荐设置为private
private $price = 6999;//扩展价格属性
private $activity = false;//扩展优惠属性
// 必须使用构造方法对使用当前新增属性生效
public function __construct($brand,$type,$model,$colour,$price,$activity)
{
parent::__construct($brand, $type, $model, $colour); //直接调取父类中的属性
$this->price = $price;
$this->activity = $activity;
}
// 2.使用新的方法来扩展父类中的功能
public function gem()
{
return 'windows10 旗舰版';
}
//3.将父类方法进行重写,就是功能重载,必须使用与父类一样的方法名:call()
public function call()
{
//此时,访问call()将会输出子类定义的功能
//但更多的时候,我们并不会放弃原有功能,而只是在它上面进行追回而已
//那么,如何在子类中引用父类中的方法呢? 使用关键字: parent,后面跟上双冒号::
return parent::call().',超强散热';
}
}
运行实例 »
点击 "运行实例" 按钮查看在线实例