Demo18.php
<?php
/*
* 到底应该用抽象类还是接口呢
* 如果你要继承多个接口的方法规范,那么就用接口好了。
* 如果你要共享一个方法体内容,那么就用抽象类。
* */
header ( 'Content-Type:text/html; charset=utf-8;' );
//创建一个接口
//接口也不能被实例化
//接口是为了规范实现它的子类,以达到统一的目的。也可以共享数据
interface Computer {
//成员字段必须是变量
const NAME = '成员 ';
//接口里的所有方法都是抽象方法,不能够写方法体
//并且接口的抽象方法不需要写 abstract
public function _run();
public function _run2();
}
interface Computer2 {
public function _run3();
}
//子类继承接口的说法,叫做实现,接口可以多实现
class NoteComputer implements Computer,Computer2 {
public function _run() {
echo '我重写了run';
}
public function _run3() {
echo '我重写了run3';
}
public function _run2() {
echo '我重写了run2';
}
}
$noteComputer = new NoteComputer();
$noteComputer -> _run();
$noteComputer -> _run2();
$noteComputer -> _run3();
echo NoteComputer::NAME;
//接口 :: 常量
//echo Computer::NAME;
?>
Demo19.php
<?php
header ( 'Content-Type:text/html; charset=utf-8;' );
//什么叫做多态,字面意思,多种形态
//一个动作由不同的人去执行,而产生不同的效果或者效果,即为多态。
//一个人通过不同的状态去执行同一种动作,形成不同的效果,也可以称作为多态。
//园丁 剪 修理花草
//理发师 剪 理发
//总裁 剪 裁员
//人 笔记本 运行 win7开机了
//人 台式机 运行 xp开机了
//创建一个接口,来规范运行的方法
interface Computer {
public function version(); //这个方法表示采用什么电脑
public function work(); //这台电脑是怎么运行的
}
//创建一个笔记本的类实现接口
class NoteComputer implements Computer {
public function version() {
echo '笔记本';
}
public function work() {
echo '可以便携式运行 win7';
}
}
//创建一个台式机的类实现接口
class DesktopComputer implements Computer {
public function version() {
echo '台式机';
}
public function work() {
echo '在工作站运行 XP';
}
}
//创建一个用户
class Person {
//创建一个方法来接受电脑(笔记本电脑,也可以是台式电脑)
//怎么接受,将他们的对象传进来就 OK 啦。
public function _run($type) {
echo '这个人的';
$type -> version();
$type ->work();
}
}
//多态的原理,就是类都写好了,不要去修改它,只要在类外的调用参数的更改
//而最后的结果也会得到更改,那么这个就是多态。
//有一个接口,两个类,一个是笔记本的类,一个是台式机的类
//创建了笔记本
$noteComputer = new NoteComputer();
//创建台式机
$desktopComputer = new DesktopComputer();
//创建一个人
$person = new Person();
//使用电脑
$person -> _run($noteComputer); //这种传递,叫做对象引用的传递
?>







