一个php多态性的小例子

多态性在 OO 中指 “语言具有以不同方式处理不同类型对象的能力”,但 PHP 是弱类型语言,在这一点上就比较弱,仅有 instance of 可以用于判断对象的类型

多态性的优点:让代码更接近生活中的真实情况

一下是一个非常简单的多态性例子,描述在电脑上安装不同操作系统,linux, OS X, windows 和 computer 是两种不同类型的对象。

interface os{

	function name();
	function creator();
}

class linux implements os{

	function name(){
		echo "Linux";
	}
	function creator(){
		echo " (created by Linus Torvalds)";
	}
}

class windows implements os{

	function name(){
		echo "Windows";
	}
	function creator(){
		echo " (created by Microsoft)";
	}
}

class osx implements os{

	function name(){
		echo "OSX";
	}
	function creator(){
		echo " (created by Apple)";
	}
}

class computer{

	function installOS($os){
		if ($os instanceof os){
			echo "Installing ";
			echo $os->name();
			echo $os->creator()."<br>";
	   }else{
	   		echo "not a system";
	   }
	}
}

$myComputer = new computer;

$myLinux = new linux;
$myWindows = new windows;
$myOSX = new osx;

$myComputer->installOS($myLinux);
$myComputer->installOS($myWindows);
$myComputer->installOS($myOSX);

一个php多态性的小例子,布布扣,bubuko.com

时间: 2024-10-05 05:21:40

一个php多态性的小例子的相关文章

一个简单的vue小例子之倒计时

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script> <title>测试</title> <

一个登陆过滤器的小例子

1. 过滤的路径要有统一的可以表示的路径,以方便模块化过滤 例如:用户模块:/user/*,信息模块:/info/* 2. 过滤器要有能排除不过滤路径的功能: 3. 实现相关的业务需要: import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.s

JAVA数据库应用的一个小例子

自己随便写的,以炉石为背景,写一个参考用的小例子,先上SQL表: if OBJECT_ID('card_pool') is not null drop table card_pool; create table card_pool( card_id int identity(1,1) not null, card_name varchar(32), card_occupation varchar(32), --卡牌职业:中立.德鲁伊.猎人.法师.圣骑士.牧师.潜伏者.萨满祭司.术士.战士 car

Vue2.x源码学习笔记-从一个小例子查看vm实例生命周期

学习任何一门框架,都不可能一股脑儿的从入口代码从上到下,把代码看完, 这样其实是很枯燥的,我想也很少有人这么干,或者这么干着干着可能干不下去了. 因为肯定很无聊. 我们先从一个最最简单的小例子,来查看new Vue(options)实例,这个过程发生了什么. vm实例上的属性又如何添加上去的,又如何渲染到浏览器页面上的. 关于vue的数据依赖和虚拟dom都是重点,必然会在以后的帖子记录. 这篇帖子就根据下例子,看看实例化一个vm实例做了啥吧. 先把小例子贴出来: <div id="app&

spring小例子-springMVC+mybits整合的小例子

这段时间没更博,找房去了...   吐槽一下,自如太坑了...承诺的三年不涨房租,结果今年一看北京房租都在涨也跟着涨了... 而且自如太贵了,租不起了.. 突然有点理解女生找对象要房了..   搬家太受罪了... 今天更一下springMVC整合mybits形成最简单的网站demo. 大概效果就是这样的:左边是数据库查询结果,右边是页面访问结果: 首先,一个简单的springMVC小例子可以看这个http://www.cnblogs.com/xuejupo/p/5236448.html 这是在这

java即时通信小例子

学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是在服务上开启一个线程循环等待客户端的连接,为每一个连接到服务器的Socket 创建一个实例存放在集合中,然后使用InputSteam读取从客户端发过来的数据然后转发给除自己之外的所有的客户端 然后是客户端,首先开启一个线程连接都服务器端,循环监听服务器发送回来的数据 这里要说一下为了明确是谁发出的消

一个基本的傅立叶变换例子

clear;clc; tempresult=[]; figure for i=1:6 filename=['ROISignals_sub_00' num2str(i) '_2000.mat']; data=importdata(filename); x=data(:,1); fs=2; % L=length(x); L=256; y1=fft(x,L); y2=fftshift(y1); mag=abs(y2); f=(0:L-1)*fs/L-fs/2; tempresult=[tempresu

vuex在组件化开发中的简单应用小例子

首先, 介绍一下vuex是个什么东西, 个人理解来说, vuex就是一个状态管理的东西, 它里面有且仅有一个Store仓库, 这个仓库里面存放着一些变量, 为什么要有这么一个变量呢, 用过vue的人肯定都清除, 父子组件之间的通讯传值是个比较麻烦的事情, 特别是, 嵌套组件特别多的时候, 这种情况下, 一级一级地传递下去十分麻烦, 还有就是兄弟组件之间的传值也一样麻烦. 而vuex中的Store这个仓库, 就能够为我们将放在这个仓库中的值, 分发给整个项目下的所有组件, 也就是说是, 不用一级一

gridlayout小例子

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta http-equiv="X-UA-Compatible" co