php子类最多继承几个父类,自动加载,父类与子类的继承与父类重载的方法——2018年5月3日作业...

自动加载、类属性、类继承、父类重载的方法

实例

/*

* 类的继承与方法重载

*

* 如果才能正常访问这些属性呢?

* 有二个方案来实现

* 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().',超强散热';

}

}

运行实例 »

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值