Blogger Information
Blog 49
fans 0
comment 4
visits 41659
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
抽象类与接口的区别与联系,实例说明
过儿的博客
Original
1406 people have browsed it

1、抽象类与接口

    抽象类:在类中定义一些方法和属性,不具体实现,实现的功能通过子类去实现。抽象类只作为一个模板。在类中只要有一个方法为抽象方法,此类就是抽象类。

    接口:高于抽象类,接口中没有实现的方法,所有的方法都为抽象,并且所有的属性都为public。是类的模板。抽象类介于接口和类之间,是一个过度。

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <?php
    // 抽象类
      abstract class Person{
          protected $name;
          public function __construct($name="xiao wang"){
              $this->name = $name;
          }
          public function getName(){
              return $this->name;
          }
          abstract protected function setName($value);
      }
      //抽象类不可以实例化,只能被继承
      class Stu extends Person{
          public function __construct($name = "xiaowang"){
              parent::__construct($name);
          }
          //子类中必须要实现父类中的抽象方法
          public function setName($value){
              $this->name = $value;
          }
      }
      $stu = new Stu('小王');
      echo '类中的名字为'.$stu->getName().'<br>';

      $stu->setName('小李');
      echo '类中重新设置的名字为'.$stu->getName().'<br>';

echo "***************************************************************************<br>";
      //接口  
      interface iVehicle{
          //所有的方法都为抽象的,可以不用写abstract
          public function setFuel($fule);
          public function setPurpose($purpose);
      }
      class Car implements iVehicle{
          public $fule;
          public $purpose;
          public function __construct($fule = '汽油',$purpose = '家用'){
              $this->fule = $fule;
              $this->purpose = $purpose;
          }
          public function setFuel($fule){
              $this->fuel = $fule;
          }
          public function setPurpose($purpose){
            $this->purpose = $purpose;
        }
        //在类中除了要实现接口中的方法外,还可以添加自己的方法
        public function getInfo(){
            return $this->fule.$this->purpose.'车<br>';
        }
      }
      $car = new Car();
      echo $car->getInfo();
      
      $car->setFuel('新能源');
      $car->setPurpose('公交');
      echo $car->getInfo();
      echo '<hr>';
      

    ?>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

1.png

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post