为什么要使用这样的摘要?它是否可以加快工作速度或者它的具体用途是什么?
// file1.php
abstract class Search_Adapter_Abstract {
private $ch = null;
abstract private function __construct()
{
}
abstract public funciton __destruct() {
curl_close($this->ch);
}
abstract public function search($searchString,$offset,$count);
}
// file2.php
include("file1.php");
class abc extends Search_Adapter_Abstract
{
// Will the curl_close now automatically be closed?
}
这里扩展abstract的原因是什么?让我很困惑。我现在能从中得到什么?
您可以使用抽象类来定义和部分实现扩展类应该执行的常见任务。由于如果没有示例就很难解释,请考虑以下内容:
如果没有抽象类,您将必须定义两个具有相同方法和实现的基本类。由于 OOP 的目的就是防止代码重复,因此这是完全错误的:
class Car {
public $brand = 'mercedes';
public function gasPerMile($weight)
{
// Useless calculation, purely for illustrating
$foo = $weight * 89 / 100;
return $foo;
}
public function carSpecificFunction()
{
// Only present in class Car
}
}
class Truck {
public $brand = 'MAN';
public function gasPerMile($weight)
{
// Useless calculation, purely for illustrating
$foo = $weight * 89 / 100;
return $foo;
}
public function truckSpecificFunction()
{
// Only present in class Truck
}
}
现在您有了一些公共属性和方法,它们在两个类中重复。为了防止这种情况,我们可以定义一个抽象类,其中Car
and Truck
被延长。这样,常见的功能就保留在一个地方,而扩展类将为卡车或汽车实现特定的属性和方法。
abstract class Vehicle {
abstract public $brand;
public function gasPerMile($weight)
{
// Useless calculation, purely for illustrating
$foo = $weight * 89 / 100;
return $foo;
}
}
这样,您可以确保至少每个扩展的类Vehicle
必须有指定的品牌和通用的gasPerMile()
所有扩展类都可以使用该方法。
当然,这是一个简单的示例,但希望它能够说明为什么抽象类很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)