php多态举例6,一般多态与PHP示例

文章探讨了在面向对象编程中,是否所有子类都应该有相同的接口。通过两个示例,作者提出关于使用instanceof的疑虑,以及在基类中为数据对象设置通用接口是否合适。示例涉及Dog和Cat类以及Data_Object基类,引发对于接口设计原则的思考。
摘要由CSDN通过智能技术生成

只有狗可以玩“抓”,这个例子是好还是坏主意?我怀疑这是一个非常糟糕的主意,由于使用instanceof,但我不完全确定为什么。

class Animal {

var $name;

function __construct($name) {

$this->name = $name;

}

}

class Dog extends Animal {

function speak() {

return "Woof, woof!";

}

function playFetch() {

return 'getting the stick';

}

}

class Cat extends Animal {

function speak() {

return "Meow...";

}

}

$animals = array(new Dog('Skip'), new Cat('Snowball'));

foreach($animals as $animal) {

print $animal->name . " says: " . $animal->speak() . '
';

if ($animal instanceof Dog) echo $animal->playFetch();

}

另一个例子。当我不断创建具有ID的数据对象时,我想我可能会从基类扩展它们,以避免代码重复。再一次,这是坏的吧?作为椅子没有名字,狗没有轮子。但是它们都是数据对象,所以这很令人困惑。

class Data_Object {

protected $_id;

function setId($id) {

$this->_id = $id;

}

function getId() {

return $this->_id;

}

}

class Dog extends Data_Object {

protected $_name;

function setName($name) {

$this->_name =

}

function getName() {

return $this->_name;

}

}

class Chair extends Data_Object {

protected $_numberOfWheels;

function setNumberOfWheels($number) {

$this->_numberOfWheels = $number;

}

function getNumberOfWheels() {

return $this->_numberOfWheels;

}

}

本质上我认为我要问的是:“所有的子类都应该有相同的接口,还是可以有不同的接口?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值