博客列表 >2018年5.4 17:20子类在父类的扩展,重载父类的属性

2018年5.4 17:20子类在父类的扩展,重载父类的属性

哈的博客
哈的博客原创
2018年05月04日 17:22:33668浏览

总结:

 1.类继承:在子类上使用关键字extends

 2.php不支持多继承,仅允许从一个父类上继承

  3.父类又叫超类或基类,通常只提供一些最基本的功能

  4.子类又叫派生类,可以继承父类中的公共和受保护的成员

实例

<?php
class Index
{
	// public $brand;
	protected $brand;
	protected $model;
	protected $price;

//构造方法
public function __construct($brand,$model,$price)
{
	$this->brand = $brand;
	$this->model = $model;
	$this->price = $price;
}

public function call()
{
	return '学习';
}

}

<?php
/**
 * 1.类继承:在子类上使用关键字extends
 * 2.php不支持多继承,仅允许从一个父类上继承
 * 3.父类又叫超类或基类,通常只提供一些最基本的功能
 * 4.子类又叫派生类,可以继承父类中的公共和受保护的成员
 * 
 * 子类的功能是用来扩展或重载父类的某些功能
 */
class Index1 extends Index
{
	//创建查询器,实现外部访问
	public function __get($name)
	{
		return $this->$name;
	}

	//对父级进行扩展,增加新的属性
	private $camera=false;
	private $internet=false;
	//必须使用构造方法使新增属性生效
	public function __construct($brand,$model,$price,$camera,$internet)
	{
		//调用付类的构造器初始化属性
		parent::__construct($brand,$model,$price);
		$this->camera=$camera;
		$this->internet=$internet;
	}
//新增的方法,扩展父类的方法
public function geme()
{
	return '玩游戏';
}

//将父类方法进行重写,功能重载,必须使用与父类一样的方法名call()
public function call()
{
	// return '看电影,听歌,导航';
	//更多时候我们只是在上面编辑新的功能
	return parent::call().'看电影,听歌,导航';
}

}

<?php
//使用自动加载器来加载类
spl_autoload_register(function($className){
	require './'.$className.'.php';
});
$index1 = new Index('MIUI','5plus',1600,true,true);

//输出父级的属性
echo '品牌:'.$index1->brand.'<br>';
echo '型号:'.$index1->model.'<br>';
echo '价格:'.$index1->price.'<br>';
//输出子类扩展的属性
echo '看视频:'.($index1->camera?'支持':'不支持').'<br>';
echo '上网:'.($smartPhone->internet?'支持':'没有').'<br>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

子类的功能是用来扩展或重载父类的某些功能


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议