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 }

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

  • 相关阅读:
    算法----(1)冒泡排序
    淘宝爬虫
    爬虫_豆瓣电影top250 (正则表达式)
    爬虫_猫眼电影top100(正则表达式)
    Android 简单调用摄像头
    Android 简单天气预报
    思维模型
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you
    Android studio preview界面无法预览,报错render problem
    Android studio 3.1.2报错,no target device found
  • 原文地址:https://www.cnblogs.com/kinsFeng/p/9210117.html
Copyright © 2011-2022 走看看