正在为你努力加载中........

点滴记录 分享
5
2010-7
首页 >> php >> php 三大特性 多态

php 三大特性 多态

多态从字面的意思可以理解成是多种形态 , 在其他的语言比如说java可以根据成员方法参数的个数不同,写多个相同的方法,不过php是不能这样做的,在php中可以理解成 根据对象的类型以不同的方式进行处理。用这种方式可以做成假多态效果 。 可以看下下面的php代码 应该可以明白

interface Shape {
	public function draw() ; 
}
class Triangle implements Shape {
	public function draw(){
		echo "Triangle";
	}
}
class Rectangle  implements Shape{
	public function draw(){
		echo "Rectangle";
	}	
}
class test {
	public function drawNow(Shape $Shape){
		$Shape->draw();
	}
}
$test = new test();
$test->drawNow(new Triangle());
$test->drawNow(new Rectangle());
上面的代码中我们首先定义一个 接口 Shape 然后在写2个类分别的集成这个接口,最后写一个类test 里面写一个成员方法drawNow ,参数为一个对象类型。然后根据这个对象类型调用不同类中的方法即可

另外一段简单的代码可以帮助理解 php的多态

<?php
class employee{//定义员工父类
	protected function working(){//定义员工工作,需要在子类的实现
		echo "本方法需要在子类中重载!";
	}
}
class painter extends employee{//定义油漆工类
	public function working(){//实现继承的工作方法
	echo "油漆工正在刷漆!/n";
	}
}
class typist extends employee{//定义打字员类
	public function working(){
	echo "打字员正在打字!/n";
	}
}
class manager extends employee{//定义经理类
	public function working(){
	echo "经理正在开会!";
	}
}
function printworking($obj){//定义处理方法
	if($obj instanceof employee){//若是员工对象,则显示其工作状态
		$obj->working();
	}else{//否则显示错误信息
		echo "Error: 对象错误!";
	}
}
printworking(new painter());//显示油漆工的工作
printworking(new typist());//显示打字员的工作
printworking(new manager());//显示经理的工作
上述中首先首先定义一个员工的基类 , 并定义一个方法 working , 然后定义3个继承员工基类的三个类,painter typist manager然后定义显示员工工作状态的方法 ,
下面定义一个 是一的关系方法 printworking , 用于判断是不是合法的 ,
无论增加多少个员工,只需要实现自员工父类继承的该员工类和方法 , 并不需要修改方法printworking


作者:一根烟的寂寞 分类:php
浏览:1819 评论:0

发表评论: