PHP面向对象编程(二)
2021-01-18 21:11
标签:水平 pre 依赖 his prot this 一个 垂直 基本使用 所谓对象组合,简而言之,就是在一个类中组合(或者说依赖)另一个类而不是继承另一个类来扩展他的功能,如果说类继承是垂直扩展类功能,那么对象组合则是水平扩展类功能,某种角度说,这也是对单继承机制的一种补充,是的类具有水平扩展的功能。 Trait结构通过关键字Trait定义: 类中通过use关键字引入 Trait 和类一样,支持属性和方法以及可见性设置( 使用Trait不同于类继承,完全是把Trait的所有代码组合到类中,变成了类的一部分,所以Trait中定义的属性类中就不能在重复定义了。 PHP面向对象编程(二) 标签:水平 pre 依赖 his prot this 一个 垂直 基本使用 原文地址:https://www.cnblogs.com/bigcola/p/13341648.html通过对象组合水平扩展PHP类功能
基本实现
//以汽车和动力来源的关系举例子,汽车依靠汽油或者电力才能启动
brand = $brand;
}
abstract public function drive();
abstract public function power(Gas $gas);
}
class LynkCo01 extends BaseCar
{
public function __construct()
{
$this->brand = ‘领克01‘;
}
public function drive()
{
echo "启动{$this->brand}汽车" . PHP_EOL;
}
public function power(Gas $gas)
{
echo "动力来源: " . $gas . PHP_EOL;
}
}
通过Trait 水平扩展PHP类功能。
基本使用
class Car
{
use Power;
public function drive()
{
echo "动力来源:" . $this->gas() . PHP_EOL;
echo "汽车启动..." . PHP_EOL;
}
}
可见性
private
、protected
、public
),并且即使是 private
级别的方法和属性,依然可以在使用类中调用:water() . PHP_EOL;
echo "切换动力来源:" . $this->battery() . PHP_EOL;
echo "切换动力来源:" . $this->gas() . PHP_EOL;
echo "汽车启动..." . PHP_EOL;
}
}
$car = new Car();
$car->drive();