【发布时间】:2013-05-30 20:55:40
【问题描述】:
我正在尝试学习 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);
}
我不知道是否可以将这 3 个方法声明为抽象,或者我应该删除抽象并实现它们,因为属性与方法在同一个类中。
在代码的实际形式中,我想我必须在这里将方法声明为抽象并在继承类中实现它们,在子类中,但我不知道这是否正确。
P.S:我是一个初学者,我正在努力了解事情的进展,我还没有接触到设计模式,所以请用概念解释我,这样我就可以知道什么是正确的方法。
【问题讨论】:
-
其实他们只是二传手。我认为你现在应该实施它们。
-
我建议您将类和对象类比为现实生活中的对应部分,对真实的事物提出相同的问题并尝试回答,您很可能会得到一个好的设计。还要尝试考虑设计决策将如何影响您的代码库,例如,如果您不实现这些 set*() 方法,您将不得不稍后在每个汽车类中实现它们。
-
另外,请丢掉设计模式的刻板印象。模式源于好的代码,您只需编写 OOP 而不考虑模式(至少目前如此)。这些模式只不过是一组每个人都知道它们的行为方式的类。
-
@Paul 谢谢你的解释,我会尽力保持在正确的轨道上。
标签: php oop abstract-class