<?php
/*多态特性:为扩展做准备,父类最好是接口或者抽象类
*/
interface USB{
//定义USB接口的宽和高
const WIDTH=12;
const HEIGHT=8;
//声明USB接口需要调用的方法规范
function load();
function run();
function close();
}
//声明一个电脑类,方法中参数中传的是由USB接口的子类所创建的一个对象
class computer{
function useusb(USB $dev){
$dev->load();
$dev->run();
$dev->close();
}
}
//声明一个鼠标类实现USB接口中的方法
class mouse implements USB{
function load(){
echo "鼠标驱动加载成功!<br>";
}
function run(){
echo "鼠标正常运行!<br>";
}
function close(){
echo "鼠标已成功拔出!<br>";
}
}
//再声明一个键盘类来实现USB接口中的方法,多态特性的体现
class keyboard implements USB{
function load(){
echo "键盘驱动加载成功<br>";
}
function run(){
echo "键盘正常运行<br>";
}
function close(){
echo "键盘已成功拔出<br>";
}
}
class worker{
function usemanual(){
//一个人拿着一台电脑
$obj=new computer;
//同时还拿着一个鼠标
$m=new mouse();
/*多态特性的应用:我想用什么USB设备,只需要在接口实现的基础上,在此处创建一个新的对象就可以
直接拿来使用,比如在此处在创建一个键盘对象*/
$k=new keyboard();
//将鼠标插在了电脑上;
/*此处将鼠标对象作为参数传给了电脑对象中的useusb方法,因为鼠标是USB的子类,所以鼠标也属于
USB类,子类对象传给父类的引用,调用的是父类的方法,其实执行的是子类的方法内容
*/
$obj->useusb($m);
//将键盘也同时插在电脑上;
$obj->useusb($k);
}
}
$user=new worker();
$user->usemanual();
?>
/*多态特性:为扩展做准备,父类最好是接口或者抽象类
*/
interface USB{
//定义USB接口的宽和高
const WIDTH=12;
const HEIGHT=8;
//声明USB接口需要调用的方法规范
function load();
function run();
function close();
}
//声明一个电脑类,方法中参数中传的是由USB接口的子类所创建的一个对象
class computer{
function useusb(USB $dev){
$dev->load();
$dev->run();
$dev->close();
}
}
//声明一个鼠标类实现USB接口中的方法
class mouse implements USB{
function load(){
echo "鼠标驱动加载成功!<br>";
}
function run(){
echo "鼠标正常运行!<br>";
}
function close(){
echo "鼠标已成功拔出!<br>";
}
}
//再声明一个键盘类来实现USB接口中的方法,多态特性的体现
class keyboard implements USB{
function load(){
echo "键盘驱动加载成功<br>";
}
function run(){
echo "键盘正常运行<br>";
}
function close(){
echo "键盘已成功拔出<br>";
}
}
class worker{
function usemanual(){
//一个人拿着一台电脑
$obj=new computer;
//同时还拿着一个鼠标
$m=new mouse();
/*多态特性的应用:我想用什么USB设备,只需要在接口实现的基础上,在此处创建一个新的对象就可以
直接拿来使用,比如在此处在创建一个键盘对象*/
$k=new keyboard();
//将鼠标插在了电脑上;
/*此处将鼠标对象作为参数传给了电脑对象中的useusb方法,因为鼠标是USB的子类,所以鼠标也属于
USB类,子类对象传给父类的引用,调用的是父类的方法,其实执行的是子类的方法内容
*/
$obj->useusb($m);
//将键盘也同时插在电脑上;
$obj->useusb($k);
}
}
$user=new worker();
$user->usemanual();
?>