博客列表 >PHP接口与抽象类练习

PHP接口与抽象类练习

Rambo-Yang
Rambo-Yang原创
2019年12月02日 14:41:08794浏览

抽象类练习

  1. abstract class a{
  2. public $name;
  3. public $age;
  4. public function __construct($name,$age)
  5. {
  6. $this->name =$name;
  7. $this->age = $age;
  8. }
  9. abstract protected function getInfo();
  10. abstract protected function getInfo2($name);
  11. public function getInfo3()
  12. {
  13. return '<hr>getInfo3:'.$this->name;
  14. }
  15. }
  16. class b extends a {
  17. public function getInfo(){
  18. return '<hr>getinfo:'.$this->name .'---'.$this->age;
  19. }
  20. public function getInfo2($name)
  21. {
  22. $this->name = $name;
  23. }
  24. }
  25. $b = new b('rambo','18');
  26. echo $b->getInfo3();
  27. echo $b->getInfo();
  28. echo $b->getInfo2('ouyang');
  29. echo $b->getInfo3();

接口练习

  1. interface v{
  2. const country = '中国';
  3. public function setFull($fuel);
  4. public function setPurpose($purpose);
  5. }
  6. class Car implements v{
  7. public $fuel;
  8. public $purpose;
  9. public function __construct($fuel='汽油',$purpose='家用')
  10. {
  11. $this->fuel = $fuel;
  12. $this->purpose = $purpose;
  13. }
  14. public function setFull($fuel)
  15. {
  16. $this->fuel = $fuel;
  17. }
  18. public function setPurpose($purpose)
  19. {
  20. $this->purpose = $purpose;
  21. }
  22. public function getInfo(){
  23. return $this->fuel . $this->purpose . '车';
  24. }
  25. }
  26. $car = new Car();
  27. echo $car -> getInfo();
  28. echo '<hr>';
  29. $car ->setFull('新能源');
  30. $car ->setPurpose('出租');
  31. echo $car -> getInfo();

抽象类

  • 1,abstract定义抽象方法、抽象类
  • 2,抽象类只能被继承,不能实例化,且抽象方法都必须在子类复写
  • 3,类中只要有一个抽象方法,该类就必须声明为抽象类
  • 4,实现抽象方法的子类方法可见性不能低于父抽象方法的可见性
  • 5,抽象方法不能有方法体,不能有{}
  • 6,在实际开发中,通常并不会直接使用一个父类/超类,而是在父类中定义一些方法声明
  • 7,并且确信该方法肯定是会被子类重写的,父类中没必要实现,只要给一个方法编写规范即可
  • 8,这个规范包括方法的名称,参数列表等,具体实现就全部交给子类去完成了
  • 9,相当于公司的部门主管,接到老板的任务,只把属于自己的部分做了,其他部分,设置一个标准交给下属去完成
  • 10,父类的构造方法可见性为protected时,子类不会自动继承, 必须手动重写构造方法,可以用parent::手动调用

接口

  • 1,interface 指定某个类必须实现的方法,但不需要定义方法的具体实现过程
  • 2,接口中仅允许出现方法和常量
  • 3,接口方法的可见性必须是public,且方法体必须是空的
  • 4,接口是类的代码模板,可以像类一样有父子继承关系,例如:父接口,子接口
  • 5,implements 类实现接口的关键字
  • 6,如果仅是部分实现接口中的方法,请用一个抽象类来实现他
  • 7,接口中的方法,必须全是抽象方法

抽象类和接口的区别

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