面向对象接口以及和继承的混合案例

基本介绍:  就是将一些抽象方法封装到一起,在某个类需要使用时,只需要实现该接口就可以, 说的实现接口就是指将该接口中的所有的抽象方法都实现了。

规范:

  (1)   interface 是关键字,不能够修改,规定好 。

  (2)   接口名称有命名规范是: iXxxxXxxx , 首先以小写的i开头. 后面使用大驼峰命名规则

  (3)   接口中的方法,都是抽象方法, 但是不需要使用abstract 去修饰

  (4)   接口中,不能有普通的成员属性,但是可以有常量。

快速入门案例:

interface iSelfIntroduction{
    //方法:不能有方法体
    public function sayName();
    public function sayAge();
}
class Person implements iSelfIntroduction{
    public $name;
    public $age;
    public function __construct($name,$age){
        $this -> name = $name;
        $this -> age = $age;
    }
    //实现接口:
    public function sayName(){
        echo "我的名字叫" . $this -> name;
    }
    public function sayAge(){
        echo "我的名字叫" . $this -> age;
    }
}
$p1 = new Person("小明",22);

 

接口的应用案例:

interface iUsb{
    public function start();
    public function working();
    public function stop();
}
//创建类来实现接口
class Camera implements iUsb{
    public function start(){
        echo '<br>相机开始工作......';
    }
    public function working(){
        echo '<br>相机正在工作......';
    }
    public function stop(){
        echo '<br>相机停止工作......';
    }
}
class Phone implements iUsb{
    public function start(){
        echo '<br>手机开始工作......';
    }
    public function working(){
        echo '<br>手机正在工作......';
    }
    public function stop(){
        echo '<br>手机停止工作......';
    }
}
//计算机
class Computer{
    //接口的体现 把对象作为传参
    public function work(iUsb $myEquipment){
        $myEquipment -> start();
        $myEquipment -> working();
        $myEquipment -> stop();
    }
}
$camera = new Camera();
$phone = new Phone();
$computer = new Computer();
//接口的应用
$computer -> work($phone);
$computer -> work($camera);

细节说明:  (1)接口不能被实例化

  (2)接口中的所有方法都不能实现(不能有方法体)

  (3)一个类可以实现多个接口,则需要把实现的所有接口的所有方法都实现(class 类名 implements 接口1 , 接口2......{ 所有接口的方法 })

  (4)接口中可以有属性,但只能是常量 ,默认是public, 但不能用public 显式修饰

interface iMyInterface{
        const NAME = '小明';
    }

  (5)一个接口不能继承其它的类,但是可以继承别的接口 (interface 接口1 extends 接口2 , 接口3 { })

继承和接口的混合案例:

class OldMonkey{
    public $name;
    public function __construct($name){
        $this -> name = $name;
    }
    public function climbing(){
        echo "<br>" . $this -> name . "会爬树";
    }
}
interface iFly{
    public function flying();
}
interface iSwim{
    public function swimming();
}
class SmallMonkey extends OldMonkey implements iFly,iSwim{
    public function flying(){
        echo "<br>" . $this -> name . "学会了飞翔";
    }
    public function swimming(){
        echo "<br>" . $this -> name . "学会了游泳";
    }
}
$smallmonkey = new SmallMonkey('小猴子');
$smallmonkey -> climbing();
$smallmonkey -> flying();
$smallmonkey -> swimming();
原文地址:https://www.cnblogs.com/rickyctbur/p/11125105.html