mysql面向对象抽象类和接口

  1. 抽象类:含有抽象方法的类【abstract 抽象关键词】
     1 abstract class Usb
     2 {
     3     public function load(){
     4         echo "<p>Usb is loading</p>";
     5     }
     6 
     7     public function start(){
     8         echo "<p>Usb is starting</p>";
     9     }
    10 
    11     # 抽象方法
    12     abstract public function unload();
    13 }
    14 
    15 # 子类
    16 class Upan extends Usb
    17 {
    18     # 调用需先实现unload抽象方法
    19     public function unload(){
    20         echo "<p>Usb is unloading</p>";
    21     }
    22 
    23     public function jitui(){
    24         echo "<p>我喜欢鸡腿</p>";
    25     }
    26 }
    27 
    28 $obj = new Upan();
    29 $obj->load();

     

  2. 接口:只含有抽象方法的类【interface、abstract 抽象关键词】
     1 interface Usb
     2 {
     3     public function load();
     4 
     5     public function start();
     6 
     7     public function unload();
     8 }
     9 
    10 # 子类
    11 class Upan implements Usb
    12 {
    13     public function load(){
    14         echo "<p>Usb is loading</p>";
    15     }
    16 
    17     public function start(){
    18         echo "<p>Usb is starting</p>";
    19     }
    20 
    21     public function unload(){
    22         echo "<p>Usb is unloading</p>";
    23     }
    24 }
    25 
    26 # 调用前需全部实现Usb类中的抽象方法
    27 $obj = new Upan();
    28 $obj->load();

     

  3. 一个子类实现多个接口
     1 interface Usb
     2 {
     3     public function load();
     4 
     5     public function start();
     6 
     7     public function unload();
     8 }
     9 
    10 interface Usb2
    11 {
    12     public function run();
    13 }
    14 
    15 # 子类
    16 class Upan implements Usb,Usb2
    17 {
    18     public function load(){
    19         echo "<p>Usb is loading</p>";
    20     }
    21 
    22     public function start(){
    23         echo "<p>Usb is starting</p>";
    24     }
    25 
    26     public function unload(){
    27         echo "<p>Usb is unloading</p>";
    28     }
    29 
    30     public function run(){
    31         echo "<p>Usb2 is runing</p>";
    32     }
    33 }
    34     
    35 $obj = new Upan();
    36 $obj->load();

     

  4. 接口扩展,只能继承不能实现,一般不常用
     1 interface Usb
     2 {
     3     public function load();
     4 
     5     public function start();
     6 
     7     public function unload();
     8 }
     9 
    10 interface Usb2 extends Usb
    11 {
    12     public function run();
    13 }
    14 
    15 # 子类
    16 class Upan implements Usb2
    17 {
    18     public function load(){
    19         echo "<p>Usb is loading</p>";
    20     }
    21 
    22     public function start(){
    23         echo "<p>Usb is starting</p>";
    24     }
    25 
    26     public function unload(){
    27         echo "<p>Usb is unloading</p>";
    28     }
    29 
    30     public function run(){
    31         echo "<p>Usb2 is runing</p>";
    32     }
    33 }
    34 
    35 $obj = new Upan();
    36 $obj->load();

     

  5. 多态小实例
     1 interface Usb
     2 {
     3     public function load();
     4 
     5     public function start();
     6 
     7     public function unload();
     8 }
     9 
    10 # 子类
    11 class Upan implements Usb
    12 {
    13     public function load(){
    14         echo "<p>Usb is loading</p>";
    15     }
    16 
    17     public function start(){
    18         echo "<p>Usb is starting</p>";
    19     }
    20 
    21     public function unload(){
    22         echo "<p>Usb is unloading</p>";
    23     }
    24 
    25     public function run(){
    26         echo "<p>Usb2 is runing</p>";
    27     }
    28 }
    29 
    30 # 非法类
    31 class Udisk
    32 {
    33     public function load(){
    34         echo "<p>Usb is loading</p>";
    35     }
    36 
    37     public function start(){
    38         echo "<p>Usb is starting</p>";
    39     }
    40 
    41     public function unload(){
    42         echo "<p>Usb is unloading</p>";
    43     }
    44 }
    45 
    46 # 只有实现了Usb接口中所有方法才能正常调用
    47 function useUsb(Usb $o){
    48     $o->load();
    49     $o->start();
    50     $o->unload();
    51     echo "<hr>";
    52 }
    53 
    54 $obj = new Upan();
    55 $obj2 = new Udisk();
    56 useUsb($obj);
    57 useUsb($obj2); #失败

     

posted @ 2019-04-14 22:35  yach_yu  阅读(490)  评论(0编辑  收藏  举报