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

Posted __逆光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装,继承,多态,静态和接口相关的知识,希望对你有一定的参考价值。

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

  继承
  概念:子类可以继承父类的一切
  方法重写:在子类里面对父类的方法进行重写
  特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类
  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

以上是关于封装,继承,多态,静态和接口的主要内容,如果未能解决你的问题,请参考以下文章

多态与抽象以及接口

Java语言简介基础组成封装继承多态抽象类内部类接口

Java语言简介基础组成封装继承多态抽象类内部类接口

day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态

面向对象编程思想 以及 封装,继承,多态 和 python中实例方法,类方法,静态方法 以及 装饰器

面向对象程序设计-继承与多态