zoukankan      html  css  js  c++  java
  • php接口和抽象类

    /**
    * 接口 : 关键字 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 }

    就这么多... 感觉坑有点多 ...  根据自己代码鲁出的心得  也不知道对不对... 不对后期再改吧 

  • 相关阅读:
    POJ3345 Bribing FIPA(树形DP)
    POJ3294 Life Forms(二分+后缀数组)
    ZOJ1027 Travelling Fee(DP+SPFA)
    POJ2955 Brackets(区间DP)
    POJ1655 Balancing Act(树的重心)
    POJ2774 Long Long Message(后缀数组)
    URAL1297 Palindrome(后缀数组)
    SPOJ705 SUBST1
    POJ3261 Milk Patterns(二分+后缀数组)
    POJ1743 Musical Theme(二分+后缀数组)
  • 原文地址:https://www.cnblogs.com/kinsFeng/p/9210117.html
Copyright © 2011-2022 走看看