PHP面向对象编程(8.多态)

PHP面向对象编程(8.多态)

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性

多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。

(1) php本身就是天生的多态语言

(2) 当一个函数接收到不同对象时,会自动的判断并调用对应的方法。

(3) 多态利于类的维护和扩展

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// 食物类
class Food {
public $name;
public function __construct($name)
{
$this->name = $name;
}
}
class Fish extends Food {
public function showInfo() {
echo '<br/>鱼的品种是' . $this->name;
}
}
class Bone extends Food {
public function showInfo() {
echo '<br/>骨头的品种是' . $this->name;
}
}

class Animal {
public $name;
public function __construct($name)
{
$this->name = $name;
}
}
class Dog extends Animal {
public function showInfo() {
echo '<br/>狗的品种是' . $this->name;
}
}
class Cat extends Animal {
public function showInfo() {
echo '<br/>猫的品种是' . $this->name;
}
}

// 主人类
class Master {
public $name;
public function __construct($name)
{
$this->name = $name;
}
public function feed(Animal $animal, Food $food) {
echo '<br/>主人是' . $this->name;
$animal->showInfo();
echo '<br/>喜欢吃';
$food->showInfo();
}
}

// 创建两个动物和食物
$cat = new Cat('波斯猫');
$dog = new Dog('阿拉斯加');
$bone = new Bone('骨头');
$fish = new Fish('沙丁鱼');
// 创建主人
$master = new Master('lx');
$master->feed($cat, $fish);
$master->feed($dog, $bone);
// 结果:
//主人是lx
//猫的品种是波斯猫
//喜欢吃
//鱼的品种是沙丁鱼
//主人是lx
//狗的品种是阿拉斯加
//喜欢吃
//骨头的品种是骨头

类名可以是字符串变量

举例说明:

1
2
$class_name = 'Cat';
$person = new $class_name();
文章目录
  1. 1. PHP面向对象编程(8.多态)
    1. 1.1. 类名可以是字符串变量
本站总访问量 | 本页面被访问 | 您是第位小伙伴

© XueSi博客 版权所有 备案号 : 赣ICP备19008485号-1