声明函数abstract后发生致命错误

时间:2018-04-12 10:30:51

标签: php oop inheritance abstract

我遇到一个错误,我得到的错误是: Class Car包含1个抽象方法,因此必须声明 红色抽象或实现C:\ xampp中的其余方法(Car :: acceleration) 第58行的\ htdocs \ php \ learn_php_oop \ Car.php。

这是我正在使用的两个文件中的代码:

Car.php

<?php
/**
* represents generic properties and methods for any type of car
*/
class Car
{
 protected $colour, $doorNumber, $fuelType, $rightHandDrive, $accelerate;

 public function __construct($rightHandDrive = true)
 {
  $this->rightHandDrive = $rightHandDrive;
 }

 public function getColour()
 {
  return $this->colour;
 }

 public function setColour($colour)
 {
  $this->colour = $colour;
 }

 public function getDoorNumber()
 {
  return $this->doorNumber;
 }

 public function setDoorNumber($doorNumber)
 {
  $this->doorNumber = $doorNumber;
 }

 public function getFuelType()
 {
  return $this->fuelType;
 }

 public function setFuelType($fuelType)
 {
  $this->fuelType = $fuelType;
 }

 public function getRightHandDrive()
 {
  return $this->rightHandDrive;
 }

 public function setRightHandDrive($rightHandDrive)
 {
  $this->rightHandDrive = $rightHandDrive;
 }

 abstract protected function accelerate();

}
?>

Sport_car.php

<?php

include ('Car.php');
/**
 * represents sport cars
*/
class Sport_car extends Car
{

 public function accelerate()
 {
  $this->accelerate = 5;
 }

}
?>

我花了一些时间试图弄清楚为什么会这样,但我不知道为什么?请帮忙。

1 个答案:

答案 0 :(得分:0)

这是一个OOP问题,在你的情况下,你必须像这样将你的Car Object声明为Abstract:

<?php
/**
* represents generic properties and methods for any type of car
*/
abstract class Car
{
 protected $colour, $doorNumber, $fuelType, $rightHandDrive, $accelerate;

 public function __construct($rightHandDrive = true)
 {
  $this->rightHandDrive = $rightHandDrive;
 }

 public function getColour()
 {
  return $this->colour;
 }

 public function setColour($colour)
 {
  $this->colour = $colour;
 }

 public function getDoorNumber()
 {
  return $this->doorNumber;
 }

 public function setDoorNumber($doorNumber)
 {
  $this->doorNumber = $doorNumber;
 }

 public function getFuelType()
 {
  return $this->fuelType;
 }

 public function setFuelType($fuelType)
 {
  $this->fuelType = $fuelType;
 }

 public function getRightHandDrive()
 {
  return $this->rightHandDrive;
 }

 public function setRightHandDrive($rightHandDrive)
 {
  $this->rightHandDrive = $rightHandDrive;
 }

 abstract protected function accelerate();

}
?>

解释:

用至少一个抽象方法扩展的类必须被定义为抽象本身,否则你会得到一个错误