class person
{
public $name;
public function run()
{
echo '我叫'.$this->name.'我在跑';
}
public function say()
{
echo '我叫'.$this->name.'我在说';
}
public function __construct($name) {
$this->name = $name;
}
}
class family
{
public $person;
public function __construct($name) {
$this->person = new person($name);
}
}
$fam = new family('andy');
$fam->person->run(); 类的继承,用继承实现上面的代码
class person
{
public $name;
public function run()
{
echo '我叫'.$this->name.'我在跑';
}
public function say()
{
echo '我叫'.$this->name.'我在说';
}
public function __construct($name) {
$this->name = $name;
}
}
class family extends person
{
public $person;
public function __construct($name) {
parent::__construct($name);
}
}
$fam = new family('andy');
$fam->run();
组合与继承的使用 组合与继承都是可提高代码重用性的手段。再设计对象模型时,可以按照语义识别类之间的组合关系和继承关系。作者通过总结得出了 继承是一种“是,像“的关系,而组合是一种”需要“的关系
working(); } } doprint(new teacher()); doprint(new coder()); doprint(new employee());判断传入的对象所属类的不同来调用其同名的方法,得出不同的结果。 另外一种实现方式
interface employee{
public function working();
}
class teacher implements employee{
public function working(){
echo '教书';
}
}
class coder implements employee{
public function working(){
echo '敲代码';
}
}
function doprint(employee $i){
$i $i->working();
}
$a=new teacher;
$b=new coder;
doprint($a);
doprint($b); 相比上一种通过判断对象所属类的实现方式,这个是通过接口来实现的多态,也符合”同一类型,不同结果”这一特征。