Sta*_*ays 5 php oop abstract-class
我正在尝试用PHP学习OOP,现在我已经达到了抽象类.
我有一些问题,理解何时应该在抽象类中实现抽象方法,何时不应该.
例如,有这个代码:
<?php
abstract class concept_car {
/**
* Properties can not be declared as abstract natively:
* http://stackoverflow.com/questions/7634970/php-abstract-properties
*/
protected $weelNum = NULL;
protected $doorsNum = NULL;
protected $color = NULL;
protected $carType = NULL;
// the inheritance class must define this methods
abstract public function setWeelNum($weelNum);
abstract public function setDoorsNum($doorsNum);
abstract public function setCarType($carType);
}
Run Code Online (Sandbox Code Playgroud)
我不知道将3个方法声明为抽象是否可以,或者我应该删除抽象并实现它们,因为属性与方法属于同一个类.
在代码的实际形式中,我认为我必须在这里将方法声明为抽象,并在子类中的继承类中实现它们,但我不知道这是否是正确的方法.
PS:我是一名初学者,我正在努力了解情况如何,我还没有达到设计模式,所以请在概念中解释我,以便我知道什么是正确的方法.
你必须问自己一个简单的问题:
扩展这个的所有类都做同样的事情吗?
对于这个例子,答案是肯定的,他们都会这样做
public function setWeelNum($weelNum) {
$this->weelNum = $weelNum;
}
Run Code Online (Sandbox Code Playgroud)
所以不要在每个类中复制/粘贴代码,这没有意义.
当该类的所有孩子必须以不同的方式实施这种方法时.
例如,在课堂上Animal,你会有一个public abstract function move();因为所有动物都在移动,但你不知道究竟是怎么回事.