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