zoukankan      html  css  js  c++  java
  • 面向对象三大特性

      1 //面对对象三大特性
      2 //封装
      3 //目的:让类更安全
      4 //做法:成员变量变为私有的,通过方法来间接操作成员变量,在方法里面加限制条件
      5 
      6 //继承
      7 //概念:子类可以继承父类的一切
      8 //方法重写:在子类里面对父类的方法进行重写
      9 //特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类
     10 //override:重写
     11 //overload:重载,编译多态
     12 class Ren
     13 {
     14     public $name;
     15     function say()
     16     {
     17         echo $this->name."正在讲话!";
     18     }
     19 }
     20 
     21 class China extends Ren
     22 {
     23     public $dizhi;
     24     
     25     function say()
     26     {
     27         parent::say(); //调用父类的say方法
     28         
     29         echo "中国人说话";
     30     }
     31 }
     32 class America extends Ren
     33 {
     34     function say()
     35     {
     36         echo "speak";
     37     }
     38 }
     39 
     40 //$c = new China();
     41 //$c->say();
     42 
     43 //$a = new America();
     44 //$a->say();
     45 
     46 
     47 //多态(运行多态)
     48 //概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。
     49 //条件:1.必须发生在继承下
     50 //2.必须重写父类方法
     51 //3.父类引用调用该方法
     52 
     53 //如果一个方法需要一个父类参数,可以给一个子类对象
     54 
     55 
     56 
     57 //静态
     58 //普通成员
     59 //普通成员是属于对象的
     60 
     61 //静态成员
     62 //静态成员属于类的
     63 
     64 //关键字:static
     65 //self关键字:在类里面代表该类
     66 //在静态方法里面不能调用普通成员
     67 //在普通方法里面能够调用静态成员
     68 
     69 /*class FenBi
     70 {
     71     public $length; //粉笔的长度
     72     public static $color; //粉笔的颜色
     73     
     74     static function show()
     75     {
     76         echo "粉笔颜色是:".self::$color;
     77     }
     78     
     79     function XianShi()
     80     {
     81         echo "显示:".self::$color;
     82     }
     83 }
     84 
     85 $f = new FenBi(); //先造一个对象
     86 $f->length; //用对象去调用普通成员
     87 
     88 FenBi::$color = "红色"; //使用类名调用静态成员
     89 FenBi::show();
     90 $f->XianShi();*/
     91 
     92 //抽象
     93 //抽象类:关键字abstract
     94 //特点:不能被实例化,只能被继承
     95 //目的:为了派生子类,控制子类
     96 
     97 /*abstract class Dog
     98 {
     99     public $name;
    100     
    101     function Jiao()
    102     {
    103         echo "汪汪";
    104     }
    105 }
    106 
    107 class JinMao extends Dog
    108 {
    109     
    110 }*/
    111 
    112 //$d = new Dog();
    113 
    114 //接口
    115 //极度抽象的类
    116 //接口里面不能包含成员变量,只能包含成员方法
    117 //成员方法可以没有函数体
    118 //接口关键字:interface
    119 //实现接口的类,必须实现接口里面的所有方法
    120 
    121 interface IUSB
    122 {
    123     function read(); //读的方法
    124     function write(); //写的方法
    125 }
    126 
    127 //鼠标的驱动类
    128 class Mouse implements IUSB
    129 {
    130     function read()
    131     {
    132         echo "鼠标点击了";
    133     }
    134     function write()
    135     {
    136         echo "给鼠标一个指令";
    137     }
    138 }
    139 
    140 //键盘的驱动类
    141 class JianPan implements IUSB
    142 {
    143     function read()
    144     {
    145         echo "键盘输入了内容";
    146     }
    147     function write()
    148     {
    149         echo "给键盘指令";
    150     }
    151 }
    152 
    153 $m = new Mouse();
    154 $m->write();
    155 
    156 $j = new JianPan();
    157 $j->read();
    158 
    159 
    160 
    161 //接口:API
  • 相关阅读:
    Redis代理与集群的总结报告
    redis代理对比,redis架构对比,redis predixy安装和功能测试
    kafka学习方向系列
    redis-cluster-proxy安装使用尝试
    redis6集群安装与运维管理
    kafka集群搭建(利用集成zk集群)
    vue-property-decorator用法介绍
    软件世界的基石:重要开源项目盘点
    ECMAScript 6 入门
    windows下快速删除node_modules
  • 原文地址:https://www.cnblogs.com/The-second/p/5996710.html
Copyright © 2011-2022 走看看