博客列表 >11月29日—抽象类和接口的实现

11月29日—抽象类和接口的实现

曾龙宇
曾龙宇原创
2019年12月02日 10:20:10603浏览

抽象类

①、使用”abstract”关键字定义抽象类或抽象方法(不能有方法体)。
②、抽象类只能被继承,不能实例化,并且抽象方法必须在子类实现。
③、实现抽象方法的子类方法可见性不能低于抽象方法原定义。
④、子类实现抽象类时。必须全部的抽象方法都要实现,不能少或多。

  1. <?php
  2. header('content-type:text/html;charset=utf-8');
  3. abstract class Person{
  4. protected $name;
  5. protected function __construct($name){
  6. $this->name = $name;
  7. }
  8. public function getName(){
  9. return $this->name;
  10. }
  11. abstract protected function setname($v);
  12. }
  13. class Student extends Person{
  14. public function __construct($name){
  15. parent::__construct($name);
  16. }
  17. public function setname($v){
  18. $this->name = $v;
  19. }
  20. }
  21. $student = new Student('张三');
  22. echo '第一次赋值:'.$student->getName();
  23. echo '<br>';
  24. $student->setname('李四');
  25. echo '第二次赋值:'.$student->getName();

接口

①、使用”interface”关键字定义接口,方法体必须为空,方法全部都是抽象方法。
②、接口方法的可见性必须是”public”。
③、类实现接口的关键字”implements”。
④、接口中只允许存在抽象方法和常量

  1. <?php
  2. header('content-type:text/html;charset=utf-8');
  3. interface iCook{
  4. public function setMeat($meat);
  5. public function setVegetable($vegetable);
  6. }
  7. class Cook implements iCook{
  8. public $meat;
  9. public $vegetable;
  10. public function __construct($meat,$vegetable){
  11. $this->meat = $meat;
  12. $this->vegetable = $vegetable;
  13. }
  14. public function setMeat($meat){
  15. $this->meat = $meat;
  16. }
  17. public function setVegetable($vegetable){
  18. $this->vegetable = $vegetable;
  19. }
  20. public function getMenu(){
  21. return $this->vegetable.'炒'.$this->meat;
  22. }
  23. }
  24. $cook = new Cook('猪肉','芹菜');
  25. echo '第一道菜:'.$cook->getMenu().'<br>';
  26. $cook->setMeat('牛肉');
  27. $cook->setVegetable('西红柿');
  28. echo '第二道菜:'.$cook->getMenu();

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议