• 封装,继承,多态,静态和接口


      面对对象三大特性
      封装
      目的:让类更安全
      做法:成员变量变为私有的,通过方法来间接操作成员变量,在方法里面加限制条件

      继承
      概念:子类可以继承父类的一切
      方法重写:在子类里面对父类的方法进行重写
      特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类
      override:重写
      overload:重载,编译多态
      class Ren
      {
      public $name;
      function say()
      {
      echo $this->name."正在讲话!";
      }
      }

      class China extends Ren
      {
      public $dizhi;

      function say()
      {
      parent::say(); //调用父类的say方法

      echo "中国人说话";
      }
      }
      class America extends Ren
      {
      function say()
      {
      echo "speak";
      }  
      }

      $c = new China();
      $c->say();

      $a = new America();
      $a->say();


      多态(运行多态)
      概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。
      条件:1.必须发生在继承下
         2.必须重写父类方法
           3.父类引用调用该方法

      如果一个方法需要一个父类参数,可以给一个子类对象

      继承
      子类可以继承父类的一切
      特点:单继承
      函数的重写

      多态
      当父类引用指向子类实例,由于子类对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同
      如果一个方法需要一个父类的参数,可以给一个子类对象

      静态
          普通成员
      普通成员是属于对象的

       静态成员
      静态成员属于类的

      关键字:static
      self关键字:在类里面代表该类
      在静态方法里面不能调用普通成员
      在普通方法里面能够调用静态成员

        class FenBi
      {
        public $length; 粉笔的长度
        public static $color; 粉笔的颜色

        static function show()
        {
          echo "粉笔颜色是:".self::$color;
        }

        function XianShi()
        {
          echo "显示:".self::$color;
        }
      }

      $f = new FenBi(); 先造一个对象
      $f->length; 用对象去调用普通成员

      FenBi::$color = "红色"; 使用类名调用静态成员
      FenBi::show();
      $f->XianShi();

      抽象
      抽象类:关键字abstract
      特点:不能被实例化,只能被继承
      目的:为了派生子类,控制子类

      abstract class Dog
      {
        public $name;

        function Jiao()
        {
          echo "汪汪";
        }
      }

      class JinMao extends Dog
      {

      }

      $d = new Dog();

      接口
      极度抽象的类
      接口里面不能包含成员变量,只能包含成员方法
      成员方法可以没有函数体
      接口关键字:interface
      实现接口的类,必须实现接口里面的所有方法

      interface IUSB
      {
        function read(); 读的方法
        function write(); 写的方法
      }  

     鼠标的驱动类
      class Mouse implements IUSB
      {
        function read()
      {
        echo "鼠标点击了";
      }
      function write()
      {
        echo "给鼠标一个指令";
      }
    }

      键盘的驱动类
      class JianPan implements IUSB
      {
        function read()
      {
        echo "键盘输入了内容";
      }
       function write()
      {
        echo "给键盘指令";
      }
      }

      $m = new Mouse();
      $m->write();

      $j = new JianPan();
      $j->read();

    接口:API

  • 相关阅读:
    101与金根回顾敏捷个人:(93)《做最好的自己》之成功同心圆
    ArchiMate - 发布【企业架构语言ArchiMate v0.5.pdf】
    blog推荐 - 软件产品管理之Tyner Blain
    家庭创意:春节寻宝习俗
    流程 - 发布【敏捷方法之Scrum v0.2.pdf】
    个人管理 - 使用Scrum来敏捷自己
    blog推荐 - 电子图书与IT文档资料(ITPUB论坛)
    架构语言ArchiMate -应用层(Application Layer)
    架构语言ArchiMate - ArchiMate提供的基本视角(Viewpoints)介绍一
    故事:两只老虎的悲惨结局
  • 原文地址:https://www.cnblogs.com/cyd123/p/6841682.html
Copyright © 2020-2023  润新知