php中的多态

多态的确切含义是: 同一类对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种状态,多种结果。

以java为例,由于java是强类型语言,因此变量和函数返回值是有状态的。比如,实现一个add函数的功能,其参数可能是两个int型整数,也可能是两个float型浮点数,而返回值可能是整型或者浮点型。这种情况下,add函数是有状态的,它有多种可能运行结果。在实际使用时,编译器会自动匹配适合的那个函数。这属于函数重载的概念。需要说明的是,重载并不是面向对象里的东西,和多态也不是一个概念,它属于多态的一种表现形式。

多态性是一种通过多种状态或阶段描述相同对象的编程方式。它的真正意义在于:实际开发中,只要关心一个接口或基类的编程,而不必关心一个对象所属于的具体类。

很多地方会看到“PHP没有多态”这种说法.事实上,不是它没有,而是它本来就是多态的.PHP作为一门脚本语言,自身就是多态的,所以在语言的这个级别上,不谈PHP的多态.

时间: 2024-08-08 21:50:03

php中的多态的相关文章

java中的多态

多态是什么 1:在面向对象的程序设计中,多态是继继承和封装之后的第三大特征. 2:base类和导出类中有相同方法时,先调导出类的方法. 3:多态的作用是消除base类和导出类的耦合: 多态产生的条件 1 存在继承关系 2子类重写base类方法 3base类的引用指向子类 class Aa{ public void f(){ System.out.println("A.f()"); } } class B extends Aa{ public void f(){//子类重写base类方法

什么是c++中的多态

什么是c++中的多态 引言 多态(Polymorphism).封装(Encapsulation)和继承(Inheritance)是面向对象思想的"三大特征",此处俗称"面向对象的三板斧",而多态是三板斧中最厉害的杀招,是面向对象最精微的内功,可以说,不理解多态就不懂得什么是面向对象. 定义 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果. 简单地概括为"一个接口,多种方法". 类别 (1)编译时的多态性. ??编译时的多态性是通过

go语言如何实现类似c++中的多态功能

go语言作为编程语言中的后起之秀,在博采众长的同时又不失个性,在注重运行效率的同时又重视开发效率,不失为一种好的开发语言.在go语言中,没有类的概念,但是仍然可以用struct+interface来实现类的功能,下面的这个简单的例子演示了如何用go来模拟c++中的多态的行为. package main import "os" import "fmt" type Human interface { sayHello() } type Chinese struct {

js中实现多态

多态的实现可以采用和继承类似的方法.首先定义一个抽象类,其中调用一些虚方法,虚方法在抽象类中没用定义,而是通过其具体的实现类来实现. 如下面的例子: Object.extend=function(destination,source){ for(property in source){ destination[property]=source[property]; } return destination; } //定义一个抽象基类base,无构造函数 function base(){}; ba

python中的多态

# -*- coding: cp936 -*- #python 27 #xiaodeng #python中的多态 #多态:一个操作的意义取决于被操作对象的类型,相同的消息给予不同的对象会引发不同的动作. #多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式 #在处理多态对象时,只需要关注他的接口即可 #同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果. #多态案例1 #同样的+号可以用不同的对象相加,体现了多态的功能 print 1+2 print 'h

java中实现多态的机制是什么?

多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次深入Java核心,一起学习Java中多态性的实现. “polymorphism(多态)”一词来自希腊语,意为“多种形式”.多数Java程序员把多态看作对象的一种能力,使其能调用正确的方法版本.尽管如此,这种面向实现的观点导致了多态的神奇功能,胜于仅仅把多态看成纯粹的概念. Java中的多态总是子类型

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; } */ /* 样例2: class Parent{ } class Child extends Parent{ int num = 4; } */ /* 样例3: class Parent{ void show(){ System.out.println("Parent Show!"); } } class Child exten

【原创】在Unity中关于多态转换与序列化保存的细节

在Unity中关于多态转换与序列化保存的细节 环境: 在unity中为类变量分类. [System.Serializable] public class dllProperty { public int num1 = 1; public string name1 = "dll"; public bool isOn = false; } [System.Serializable] public class myProperty : dllProperty { public int num

python 中的多态

动态语言的多态和静态语言c++等多态含义不太一样,c++中的多态就是参数数量和类型不同的方法就是不同方法,而动态语言中的多态其实值的是方法的寻找过程,即向右找到类(或者单件类),在类中找不到的话再找父类,一直在祖先链中找到或者找不到为止,先找到的就被调用: class MyClass(object): def fn(x): print ("This is the first fn") def fn(x,y): print ("This is the second fn&quo

Java语言中的----多态和异常处理

day13 Java语言中的----多态和异常处理 一.概述: 学习Java语言就要理解Java中的面向对象的四大特征:分别是封装.抽象.继承.多态.前面三个我们已经学完了,下面我们来学一下多态.什么是多态?不明思议就是具有两种形态性,一个方法可以定义两种形态,这就是方法的多态性.同时我们还会学习到什么是方法重载.和方法签名. 异常处理就是在编译的时候需要我们手动的去处理一下编译都不能够通过的程序.使用try {} catch{}结构就可以处理异常. 二.多态: 1.所有类的基类是object,