0
点赞
收藏
分享

微信扫一扫

php中抽象类和接口的概念和区别


    1. //抽象类的定义:  
    2. abstract class ku{ //定义一个抽象类
    3. abstract function kx();
    4. ......
    5. }
    6.
    7. function aa extends ku{
    8. //实现抽象类的方法
    9. function kx(){
    10. echo 'sdsf';
    11. }
    12. }
    13.
    14. //使用方法
    15.
    16. $aa=new aa;
    17. $aa->kx();
    18.
    19. //1.定义一些方法,子类必须完全实现这个抽象中所有的方法
    20. //2.不能从抽象类创建对象,它的意义在于被扩展
    21. //3.抽象类通常具有抽象方法,方法中没有大括号
    22. //4.抽象方法不必实现具体的功能,由子类来完成
    23. //5.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义
    24. //6.抽象类的方法可以有参数,也可以为空
    25. //7.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数
    26.
    27.
    28.
    29.
    30.
    31. //接口类的定义:
    32. interface Shop{
    33. public function buy($gid);
    34. public function sell($gid);
    35. abstract function view($gid);
    36. }
    37. //如果要使用接口,必须定义接口类中的所以方法少一个都不可以(abstract除外)。
    38. //这样如果在一个大项目中不管别人怎么去做下面的方法,但是他必须实现本接口中的所有方法才可以!
    39.
    40.
    41. //例:实现上面的接口的一种方法
    42. class BaseShop implements Shop{
    43. public function buy($gid){
    44. echo '你购买了ID为 :' . $gid . '的商品';
    45. }
    46. public function sell($gid){
    47. echo '你购卖ID为 :' . $gid . '的商品';
    48. }
    49. public function view($gid){
    50. echo '你浏览了ID为 :' . $gid . '的商品';
    51. }
    52. }
    53.
    54.
    55. //接口的多重继承示例:
    56. <?php
    57. interface staff_i1{ //接口1
    58. function setID();
    59. function getID();
    60. }
    61.
    62. interface staff_i2{ //接口2
    63. function setName();
    64. function getName();
    65. }
    66.
    67. class staff implements staff_i1,staff_i2{
    68. private $id;
    69. private $name;
    70. function setID($id){
    71. $this->id = $id;
    72. }
    73.
    74. function getID(){
    75. return $this->id;
    76. }
    77.
    78. function setName($name){
    79. $this->name = $name;
    80. }
    81.
    82. function getName(){
    83. return $this->name;
    84. }
    85.
    86. function otherFunc(){ //这是一个接口中不存在的方法
    87. echo “Test”;
    88. }
    89. }
    90. ?>


              

     

     

     他们的不同点:

    1。抽象类中可以有非抽象的方法而接口中只能够有抽象的方法!

    2。一个类可以实现多个接口,而一个类只能继承一个抽象类!

    3。接口的使用方式通过implements关键字进行,抽象类则是通过继承extends关键字进行!

    举报

    相关推荐

    0 条评论