zoukankan      html  css  js  c++  java
  • 面向对象接口以及和继承的混合案例

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

    规范:

      (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();
  • 相关阅读:
    【YBTOJ】【Luogu P4398】[JSOI2008]Blue Mary的战役地图
    【YBTOJ】【Luogu P2601】[ZJOI2009]对称的正方形
    Hystrix超时设置无效及解决原因
    nginx的压缩
    使用nginx配置本地yum 源
    通过nginx制作类似阿里云镜像下载的网站
    nginx下配置显示网站图标
    nginx---自定义日志格式和json日志
    git clone error: RPC failed; result=35, HTTP code = 0 fatal: The remote end hung up unexpectedly
    nginx---缓存
  • 原文地址:https://www.cnblogs.com/rickyctbur/p/11125105.html
Copyright © 2011-2022 走看看