当前位置:网站首页>【PHP】php多态
【PHP】php多态
2022-06-22 21:24:00 【weixin_43224306】
多态的含义是:同一类的对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种状态,也就是多种结果。
例1
<?php
class employee{
protected function working(){
echo '本方法需要重载';
}
}
class teacher extends employee{
public function working(){
echo '教书';
}
}
class coder extends employee{
public function working(){
echo '写代码';
}
}
function doprint($obj){
if(get_class($obj) == 'employee'){
echo 'Error';
}else{
$obj->working();
}
}
doprint(new teacher());
doprint(new coder());
doprint(new employee());
例2
<?php
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->working();
}
$a = new teacher;
$b = new coder;
doprint($a);
doprint($b);
例2和例1没多少区别,不过代码中doprint函数的参数是一个接口类型的变量,符合“同一类型,不同结果”这一条件,具有多态性的一般特性,因此是多态
例1中如果把doprint函数的obj参数看做一种类型(把所有弱类型看做一种类型),那也可以认为是多态,否则不是
区别是否是多态的关键在于看对象是否属于同一类型
php中父类和子类看做“继父”和“继子”关系,它们存在继承关系,但是不存在血缘关系。因此子类无法向上转型为父类,从而失去多态最典型的特性
边栏推荐
- Spark SQL Start(2.4.3)
- Freshman girls' nonsense programming is popular! Those who understand programming are tied with Q after reading
- 在一条DML语句中插入/更新/删除/获取几百万行数据,你会特别注意什么?
- LeetCode_ Backtracking_ Dynamic programming_ Medium_ 131. split palindrome string
- Redis cache
- 剑指 Offer 06. 从尾到头打印链表
- 为什么现在大家都不用外键了(二)?
- Various schemes for lazy loading of pictures
- swagger2 使用方法
- OJ daily practice - word length
猜你喜欢

弱电转职业网工难不难?华为售前工程师分享亲身经历

保证数据库和缓存的一致性

如何使用enum数据类型

MySQL master-slave synchronization and its basic process of database and table division

canvas生成海报

'dare not doubt the code, but have to doubt the code 'a network request timeout analysis

Canvas generate Poster

JSBridge

Enterprise digitalization is not a separate development, but a comprehensive SaaS promotion

Customize multi-level list styles in word
随机推荐
OJ daily practice - word length
获取当前所在周的起始和结束的日期
07 项目成本管理
反向代理HAProxy
OJ daily practice - Verifying substring
斐波那契数列合集
Web Caching Technology
Introduction to database access tools
Tianyi cloud takes advantage of the new infrastructure to build a "4+2" capability system for digital transformation
Tp5.1 solving cross domain problems
企业数字化不是各自发展,而是全面SaaS化推进
Fibonacci sequence set
2. interface (calculator)
冒泡排序 指针
弱电转职业网工难不难?华为售前工程师分享亲身经历
swagger2 使用方法
Redistemplate encountered problems with \x00
Webrtc series - 4connection sorting of network transmission
事物系统的几种异常场景
xml转义字符对照表