PHP多态

猫斯基  — PHP


多态特性

必须有继承关系,父类最好是接口或抽象类。

/* 
 猫斯基 maosiji.com
 */
interface USB {
	
	const WIDTH = 12;
	const HEIGHT = 3;
	
	function load();
	
	function run();
	
	function stop();
	
}

class PC {
	// 参数只能传USB类型的
	function useUSB( USB $usb ) {
		$usb->load();
		$usb->run();
		$usb->stop();
	}
	
}

class Mouse implements USB {
	function load(){ echo '加载鼠标成功<br>';}
	function run(){ echo '运行鼠标<br>';}
	function stop(){ echo '鼠标工作结束<br>';}
}

class KeyPress implements  USB {
	function load(){ echo '加载键盘成功<br>';}
	function run(){ echo '运行键盘<br>';}
	function stop(){ echo '键盘工作结束<br>';}
}

class Worker {
	function work() {
		$pc = new PC();
		$m = new Mouse;
		$k = new KeyPress;
		$pc->useUSB( $m );
		$pc->useUSB( $k );
	}
}

$v = new Worker;
$v->work();

/*
打印结果:
加载鼠标成功
运行鼠标
鼠标工作结束
加载键盘成功
运行键盘
键盘工作结束
*/

阅读量:0 2021-02-03 23:50

返回顶部