接口是更加抽象的抽象类,抽象类中的方法可以有方法体,然而接口里的所有方法都没有方法体
基本语法
<?php
Interface iMyInterface
{
public function sayHi();
}
class Test implements iMyInterface
{
public function sayHi()
{
echo '<script>alert("成功说话");</script>';
}
}
$test = new Test();
$test->sayHi();
<?php
Interface iMyInterface
{
public function sayHi();
}
class Test implements iMyInterface
{
public function sayHi()
{
echo '<script>alert("成功说话");</script>';
}
}
$test = new Test();
$test->sayHi();
将接口当成对象传入类方法,调用接口方法
<?php
# 定义接口
interface iUsb
{
public function start();
public function working();
public function stop();
}
# 定义实现类
class Phone implements iUsb
{
public function start()
{
echo '手机正在开启。。。<br />';
}
public function working()
{
echo '手机正在工作。。。<br />';
}
public function stop()
{
echo '手机正在关闭。。。<br />';
}
}
class Tv implements iUsb
{
public function start()
{
echo '电视正在开启。。。<br />';
}
public function working()
{
echo '电视正在工作。。。<br />';
}
public function stop()
{
echo '电视正在关闭。。。<br />';
}
}
# 将接口作为对象传入方法中,可以调用接口里的方法
class Computer
{
public function work(iUsb $iMyUsb)
{
$iMyUsb->start();
$iMyUsb->working();
$iMyUsb->stop();
}
}
# 实例化
$phone = new Phone();
$tv = new Tv();
$computer = new Computer();
$computer->work($phone);
$computer->work($tv);
<?php
# 定义接口
interface iUsb
{
public function start();
public function working();
public function stop();
}
# 定义实现类
class Phone implements iUsb
{
public function start()
{
echo '手机正在开启。。。<br />';
}
public function working()
{
echo '手机正在工作。。。<br />';
}
public function stop()
{
echo '手机正在关闭。。。<br />';
}
}
class Tv implements iUsb
{
public function start()
{
echo '电视正在开启。。。<br />';
}
public function working()
{
echo '电视正在工作。。。<br />';
}
public function stop()
{
echo '电视正在关闭。。。<br />';
}
}
# 将接口作为对象传入方法中,可以调用接口里的方法
class Computer
{
public function work(iUsb $iMyUsb)
{
$iMyUsb->start();
$iMyUsb->working();
$iMyUsb->stop();
}
}
# 实例化
$phone = new Phone();
$tv = new Tv();
$computer = new Computer();
$computer->work($phone);
$computer->work($tv);
继承类与接口
<?php
class Monkey
{
public $name;
public function __construct($name)
{
$this->name = $name;
}
public function climbing()
{
echo '<br />' . $this->name . '会爬树';
}
}
interface iBird
{
public function fly();
}
interface iFish
{
public function swim();
}
class LittleMonkey extends Monkey implements iBird,iFish
{
public function fly()
{
echo '<br />' . $this->name . '学习 飞翔';
}
public function swim()
{
echo '<br />' . $this->name . '学习 游泳';
}
}
$lm = new LittleMonkey('小猴子');
$lm->climbing();
$lm->fly();
$lm->swim();
?>
<?php
class Monkey
{
public $name;
public function __construct($name)
{
$this->name = $name;
}
public function climbing()
{
echo '<br />' . $this->name . '会爬树';
}
}
interface iBird
{
public function fly();
}
interface iFish
{
public function swim();
}
class LittleMonkey extends Monkey implements iBird,iFish
{
public function fly()
{
echo '<br />' . $this->name . '学习 飞翔';
}
public function swim()
{
echo '<br />' . $this->name . '学习 游泳';
}
}
$lm = new LittleMonkey('小猴子');
$lm->climbing();
$lm->fly();
$lm->swim();
?>
总结:1.实现接口可以看作是对php单继承机制的补充;2.实现接口可以在不打破继承的层级关系的前提下,对类的功能进行扩展