• 微信号
目录

php基础

您当前的位置:首页 > 我的笔记 > php基础>多态

上一篇: 抽象类与接口

下一篇: 设计模式

多态

多 态(Polymorphism)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在面向对象的理论 中,多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果。也即不同类的对象收到相同的消息时,将得到不同的结果。

在设计一个成员方法时,通常希望该方法具备一定的通用性,如,要实现一个动物叫的方法,由于没哥哥动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数的对象,当传入猫类对象时,就发出猫类的叫声,传入犬类对象时就发出犬类的叫声,这种 向方法中传入不同的对象,方法执行效果各异的现象就是多态。

多态实现条件

多态的实现有三个条件:首先必须有继承,即必须有父类(或基类)及其派生的子类。其次必须有父类的引用指向子类的对象,这是实现多态最重要的一个条件。最后必须有方法的重写,即子类必须对父类的某些方法根据自己的需求进行重写,方法名和参数都是相同的

案例

<?php
	//定义animal接口
	abstract class animal{
		public abstract function shout();
	}
	//定义dog类,实现animal接口
	class dog extends animal{
		public function shout(){
			echo "汪汪……<br>";
		}
	}
	//定义cat类,实现animal接口
	class cat extends animal{
		public function shout(){
			echo "喵喵……<br>";
		}
	}
	function AnimalShout($obj){
		if($obj instanceof animal){
			$obj->shout();
		}else{
			echo "对象错误!";
		}
	}
	$cat1=new cat();
	$dog1=new dog();
	AnimalShout($cat1);
	AnimalShout($dog1);
?>

运行结果

陵小宇博客-php多态

通过AnimalShout方法中唇乳不同的对象,AnimalShout()方法打印出不同动物的叫声

由此可见,多态使程序变得更加灵活,有效提高程序扩展性

上一篇: 抽象类与接口

下一篇: 设计模式