php实现多态手机
PHP实现多态手机功能
多态是面向对象编程的核心概念之一,允许不同类的对象对同一消息做出响应。以下是PHP实现多态手机功能的几种方法:
通过继承实现多态
定义一个基类Phone,子类通过继承并重写方法实现多态行为:
class Phone {
public function call() {
echo "Making a call...\n";
}
}
class IPhone extends Phone {
public function call() {
echo "Making a call via FaceTime...\n";
}
}
class AndroidPhone extends Phone {
public function call() {
echo "Making a call via Google Duo...\n";
}
}
$phones = [
new Phone(),
new IPhone(),
new AndroidPhone()
];
foreach ($phones as $phone) {
$phone->call();
}
通过接口实现多态
定义PhoneInterface接口,不同手机类实现该接口:
interface PhoneInterface {
public function call();
}
class BasicPhone implements PhoneInterface {
public function call() {
echo "Basic phone calling...\n";
}
}
class SmartPhone implements PhoneInterface {
public function call() {
echo "Smart phone calling with video...\n";
}
}
$phones = [
new BasicPhone(),
new SmartPhone()
];
foreach ($phones as $phone) {
$phone->call();
}
使用抽象类实现多态
通过抽象类定义部分实现,子类完成具体实现:
abstract class MobilePhone {
abstract public function call();
public function powerOn() {
echo "Powering on...\n";
}
}
class FeaturePhone extends MobilePhone {
public function call() {
echo "Feature phone making call...\n";
}
}
class FlagshipPhone extends MobilePhone {
public function call() {
echo "Flagship phone making HD call...\n";
}
}
$phones = [
new FeaturePhone(),
new FlagshipPhone()
];
foreach ($phones as $phone) {
$phone->powerOn();
$phone->call();
}
使用trait实现代码复用
结合多态和trait实现更灵活的代码组织:
trait CallingTrait {
public function call() {
echo "Default calling method...\n";
}
}
class NokiaPhone {
use CallingTrait;
public function call() {
echo "Nokia making reliable call...\n";
}
}
class SamsungPhone {
use CallingTrait;
public function call() {
echo "Samsung making crystal clear call...\n";
}
}
$phones = [
new NokiaPhone(),
new SamsungPhone()
];
foreach ($phones as $phone) {
$phone->call();
}
动态方法调用
使用变量方法名实现更灵活的多态:
class MultiFunctionPhone {
public function makeCall() {
echo "Standard call initiated\n";
}
public function makeVideoCall() {
echo "Video call initiated\n";
}
public function call($type = 'makeCall') {
$this->$type();
}
}
$phone = new MultiFunctionPhone();
$phone->call(); // 默认普通呼叫
$phone->call('makeVideoCall'); // 视频呼叫
以上方法展示了PHP中实现多态的不同方式,可根据具体需求选择最合适的实现方案。







