/**
* 接口 : 关键字 interface
* 继承 implements
* 我的理解 : 接口就是让你按照规范去完成你想完成的事情 ... 换句话说 你想做的事情 我这里有方法 你自己去实现就可以了
* 但是我不管你怎么去实现 但必须要去做 ...
* 注意1 : 接口的方法 不需要方法体 ... 是不能有
* 注意2 : 所有的继承者 必须实现所有的方法
* 注意3 : 声明的时候 不需要再使用class关键字
* 注意4 : 接口不能有属性
* 注意5 : 接口可以实现继承多个接口
*
* 抽象类 : 关键字 abstract
* 继承 extends
* 我的理解 : 抽象类就是 我可以告诉你 这个东西大概有些什么东西 ... 但是这个东西有些是必须条件 ...
* 你必要去达到某种状态(有些方法必须去实现) 然后我可以再给你一些实用性的建议或者功能 ...
* 举例 : 现在有个抽象车类 有很多的车 ... 但是要知道很多车的构造和外观不一样 但是他们
* 都是车 看个示例代码
* 注意1 : 可以有属性
* 注意2 : 抽象类中的抽象方法不能有方法体 其他的可以.
* 注意3 : 抽象类中的抽象方法 子类必须实现
* 注意4 : 抽象类不能实现继承多个抽象类
* 注意5 : 抽象类可以被抽象类继承
*
* 总结 : 一开始我也觉得接口和抽象方法很像 但是仔细的去理解和测试过后 发现还是有很大的差异
* 一个类可以同时实现多个接口,但是只能实现一个抽象类。
* 接口 : 适合规定一些开发规范 你要实现功能 那么这些事情你必须要去做
* 抽象 : 你要实现一些功能 我可以给你提供一些雏形 还有一些公共的资源 然后你去根据自己的要求再实现你想做的事情
*/
接口正常逻辑的代码 :
1 interface Answer{ 2 public function say(); 3 public function run(); 4 } 5 6 class Kins implements Answer { 7 8 public function say() 9 { 10 // TODO: Implement say() method. 11 echo '这是Kins类中say方法的实现!<br>'; 12 } 13 14 public function run() 15 { 16 // TODO: Implement run() method. 17 echo '这是Kins类中run方法的实现!<br>'; 18 } 19 } 20 21 $k = new Kins(); 22 23 $k->say(); 24 $k->run(); 25 26 /** result 27 * 这是Kins类中say方法的实现! 28 * 这是Kins类中run方法的实现! 29 */
接口不太正常的代码 ... (其实也算正常)
1 interface Kinose{ 2 public function a(); 3 public function b(); 4 } 5 6 interface Answer{ 7 public function say(); 8 public function run(); 9 } 10 11 interface Test extends Answer,Kinose{ 12 public function all(); 13 } 14 15 class T implements Test{ 16 public function a() 17 { 18 // TODO: Implement a() method. 19 } 20 public function b() 21 { 22 // TODO: Implement b() method. 23 } 24 public function say() 25 { 26 // TODO: Implement say() method. 27 } 28 public function run() 29 { 30 // TODO: Implement run() method. 31 } 32 public function all() 33 { 34 // TODO: Implement all() method. 35 } 36 }
一个类实现多个接口 :
1 interface Kinose{ 2 public function a(); 3 public function b(); 4 } 5 6 interface Answer{ 7 public function say(); 8 public function run(); 9 } 10 class C implements Answer,Kinose{ 11 public function a() 12 { 13 // TODO: Implement a() method. 14 } 15 public function b() 16 { 17 // TODO: Implement b() method. 18 } 19 public function say() 20 { 21 // TODO: Implement say() method. 22 } 23 public function run() 24 { 25 // TODO: Implement run() method. 26 } 27 }
抽象类 :
1 abstract class Car{ 2 3 public $a; 4 abstract function run(); 5 public function driver(){ 6 return '我可以被人驾驶'; 7 } 8 } 9 10 class Benz extends Car{ 11 12 /** 13 * @param mixed $a 14 */ 15 public function setA($a) 16 { 17 $this->a = $a; 18 } 19 20 public function run() 21 { 22 // TODO: Implement run() method. 23 echo '我是奔驰,我可以达到时速200Km/h!<br>'; 24 } 25 } 26 27 $bz = new Benz(); 28 $bz->a = 1; 29 echo $bz->driver().'<br>'; 30 $bz->run(); 31 32 /** result 33 * 我可以被人驾驶 34 * 我是奔驰,我可以达到时速200Km/h! 35 */
抽象类不正常的写法
1 abstract class TCar{ 2 3 public $a; 4 abstract function run(); 5 public function driver(){ 6 return '我可以被人驾驶'; 7 } 8 } 9 10 abstract class TTTCar extends TCar{ 11 12 } 13 14 class A extends TTTCar{ 15 function run() 16 { 17 // TODO: Implement run() method. 18 return '这是被继承的抽象类'; 19 } 20 }
就这么多... 感觉坑有点多 ... 根据自己代码鲁出的心得 也不知道对不对... 不对后期再改吧