gpt4 book ai didi

php - OOP 抽象类何时实现抽象方法

转载 作者:可可西里 更新时间:2023-11-01 13:43:02 26 4
gpt4 key购买 nike

我正在尝试学习 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:我是一个初学者,我正在尝试了解事情的进展,我还没有达到设计模式,所以请在概念上解释我,这样我就可以知道什么是正确的方法。

最佳答案

你必须问自己一个简单的问题:

Do all classes that extend this one do the same thing?

对于这个例子,答案是肯定的,他们都会做

public function setWeelNum($weelNum) {
$this->weelNum = $weelNum;
}

所以不要在每个类中复制/粘贴该代码,这没有意义。

什么时候应该声明抽象方法?

当该类的所有子类必须以不同方式实现此方法时。

例如,在 Animal 类中,您将有一个 public abstract function move(); 因为所有动物都会移动,但您不知 Prop 体是如何移动的。

关于php - OOP 抽象类何时实现抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com