导航:首页 > 编程语言 > php多态性的意思

php多态性的意思

发布时间:2022-07-16 00:19:49

Ⅰ 为啥php的多态是假多态

1.多态是指在面向对象中能够根据使用类的上下文来重新定义或改变类的性质和行为。

2.PHP不支持重载实现多态,但是PHP可以变向的实现多态效果。

3.php其语法特点,不支持固定变量类型,它是根据上下文来确定当前的类型是什么,即,最后一次赋值是什么类型,现在它就是什么类型。也就不存在将子类
变量赋给基类变量的说法。但php函数的参数,是可以规定类型的,如下面的show函数。如果传递一个不是此类型的参数,将会在运行时报错。
代码如下:

<?php

/**
*虚基类
*/
abstractclassT{
abstractfunctionshow();
}

/**
*子类
*/
classT1extendsT{
publicfunctionshow(){
echo"T1fromabstractclass!<br/>";
}
publicfunctionshow1(){
echo"T1notfromabstractclass!<br/>";
}
}

/**
*子类
*/
classT2extendsT{
publicfunctionshow(){
echo"T2fromabstractclass!<br/>";
}
publicfunctionshow1(){
echo"T2notfromabstractclass!<br/>";
}
}

classT3{
publicfunctionshow(){
echo"inT3!<br/>";
}
publicfunctionshow1(){
echo"inT3!<br/>";
}
}

$t1=newT1();
$t2=newT2();
$t3=newT3();

show($t1);
show($t2);

//报错,$t3不是T,所以被show函数调用的时候,会报类型不对的错误
//show($t3);

functionshow(T$t){//注意参数的类型
$t->show();
$t->show1();
}
?>

Ⅱ PHP多态代码实例

这篇文章主要介绍了PHP多态代码实例,本文用2个代码实例来演示PHP中的多态,需要的朋友可以参考下
多态定义:只关心一个接口或者基类,而不关心一个对象的具体类。(同一类型,不同结果)
这里两个例子:
第一个,我们发现,基类定义了标准,子类进行了自我规则的实现。这是多态的一个要求。同时,这是满足重写;实际上这是不同类的不同表现;没有严格满足一个接口,或者基类编程。因为你调用的时候不是
stu-showGrade()
而是各自自己的方法;
?
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
class
stu{
public
function
showGrade(){
echo
base
class;
}
}
class
xiaomin
extends
stu{
public
function
showGrade(){
echo
is
son
show
80;
}
}
class
xiaoli
extends
stu{
public
function
showGrade(){
echo
is
son
show
60;
}
}
function
doit($obj){
if(get_class($obj)
!=
stu){
$obj-showGrade();
}
}
doit(new
xiaoli());
doit(new
xiaomin());
第二个例子:dovoice
参数规定了$obj
为animal,意识就是用接口
接受了
实现类对象。了向上转型。这就符合同一类型,不同结果了,这就是多态;
实际上在java
会是
animal
a
=
new
dog();这样子的;因为PHP
是若类型语言。没有对象转型机制。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
interface
animal{
public
function
voice();
}
class
cat
implements
animal{
public
function
voice(){
echo
miao~~~br;
}
}
class
dog
implements
animal{
public
function
voice(){
echo
wang
~~~br;
}
}
function
dovoice(animal
$obj){
$obj-voice();
}
dovoice(new
dog());
dovoice(new
cat());

Ⅲ php 方法重写和多态的区别

重写是多态实现方法的一种,多态的实现方法包括但不局限于重写,二者不是并列关系!多态是一种思想,重写是一种方法!
换句话说,只会执行子类,不会执行父类。如果一定要执行父类,那么就要用到关键词parent。

Ⅳ PHP中多态如何实现

用trait,定义类,在被继承的类中,use,定义的trait类。
ps:use,可以多个,就是php中简单的多态的实现

Ⅳ php中什么是多态

多态就是同一个行为,作用不同的对象返回的结果不一样,这个用处挺大的

Ⅵ php有多态性吗

很早版本就支持了,看你是PHP什么版本了。
我了解的,PHP5以后的版本是支持多态的。现在最新的都已经到PHP6版本了。
你可以从www.php100.com了解较多的最新进展。而且里边有100集多的视频教程。

Ⅶ 什么是多态

多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4编程技术内幕”)。

简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。

拓展资料:

多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(重载和多态无关)。

OC中的多态:不同对象对同一消息的不同响应.子类可以重写父类的方法。

多态就是允许方法重名 参数或返回值可以是父类型传入或返回。

多态也指生物学中腔肠动物的特殊的生活方式。水螅态与水母态的世代交替现象。

把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。

使用继承性的结果就是当创建了一个类的家族,在认识这个类的家族时,就是把子类的对象当作基类的对象,这种认识又叫作upcasting(向上转型)。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。

简单的说,建立一个父类对象的引用,它所指对象可以是这个父类的对象,也可以是它的子类的对象。java中当子类拥有和父类同样的函数,当通过这个父类对象的引用调用这个函数的时候,调用到的是子类中的函数。

阅读全文

与php多态性的意思相关的资料

热点内容
带服务器的电脑怎么用 浏览:997
什么app可以调整手机帧率 浏览:313
说苑pdf 浏览:872
安装包加密有什么用 浏览:584
舍利子灵力算法 浏览:501
javacalendar天数 浏览:567
anyview阅读器java 浏览:361
怎么降为安卓10 浏览:996
javaweb程序设计郭 浏览:249
gm声望命令 浏览:486
pdf转换器电脑版免费 浏览:43
解压歌曲什么歌最好 浏览:153
诺贝尔pdf 浏览:969
云服务器快速安装系统原理 浏览:790
苹果腾讯管家如何恢复加密相册 浏览:117
手机软件反编译教程 浏览:860
sqlserver编程语言 浏览:650
gpa国际标准算法 浏览:238
服务器编程语言排行 浏览:947
怎么下载快跑app 浏览:968