您的位置:首页 > 编程语言 > PHP开发

PHP面向对象特性-多态

2017-07-24 16:16 363 查看
1、抽象类和方法

创建一个抽象类 在class前面加上abstract。

抽象类不能被实例化。

只要类里面有一个抽象方法,那么这个类必须是抽象类,类前必须加上abstract。

abstract class Computer{
//在抽象类里创建一个普通方法
//抽象方法不能够实现方法体的内容
abstract public function _run();
public function _run2(){
echo '我是父类的普通方法';
}
}
//抽象类是用来给子类来继承的,实现一种资源和规范的共享。
class NoteComputer extends Computer{
//抽象类里的抽象方法,子类必须重写,不然会报错。
//抽象类里的普通方法不需要重写,子类会直接继承。
public function _run(){
echo '我是子类的方法';
}
}
$notecomputer = new NoteComputer();
$notecomputer->_run2();


2、接口

特殊的抽象类。

到底应该用抽象类还是接口呢?

如果你要继承多个类的方法规范,那么就用接口就好了。

如果你要共享一个方法体内容,就用抽象类。

类不能实现多继承,只支持单继承,但是接口可以。

作用:规范他们的子类,以达到一致目的。

interface Computer{
//成员字段必须是常量
const NAME = '联想 ';
//接口里的所有方法都是抽象方法,不能够写方法体
public function _run();
public function _run2();
}

interface Computer2{
public function _run3();
}
//子类继承接口的说法,叫做实现,接口可以多实现。
class NoteCompuyer implements Computer{
public function _run(){
echo '我重写了run';
}
public function _run2(){
echo '我重写了run2';
}
public function _run3(){
}
}


3、多态

字面意思:多种形态。

一个动作由不同的人去执行产生不同的效果

一个人通过不同的状态去执行同一个动作形成的不同的动作。

多态的原理:就是类都写好了,不要去修改它,只要在类外调用参数修改。而最后的结果也会得到更改,这就是类的多态。

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{
//创建一个方法来接受电脑
//将他们的对象传进来
public function _run($type){
$type->version();
$type->work();
}
}
//有 一个接口 两个类
$notecomputer = new NoteComputer();
$desktopcomputer = new DesktopComputer();
$person = new Person();
//通过传不同的参数来得到不同的结果
$person->_run($notecomputer);
//结果:笔记本可以便携式运行Win7
$person->_run($desktopcomputer);
//结果:台式机在工作站运行XP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: