[英]PHP: Fatal error: Cannot instantiate abstract class
我有一个名为的抽象数据库类:
abstract class database {
protected $value;
}
我创建了另一个抽象类
abstract class my_database extends database {
public function set_value($value) {
$this->value = $value;
}
}
当我尝试使用它时:
$my_db = new my_database();
我收到错误:
Fatal error: Cannot instantiate abstract class my_database in ...
我尝试做的是:抽象类数据库有一个受保护的$值,我想创建一个包装类,以便能够(暂时)更改受保护的值。
我怎样才能做到这一点?
EDIT1:不幸的是之前,当我尝试没有抽象my_database时,我得到了错误:
- abstract methods and must therefore be declared abstract or implemented
- Abstract function cannot contain body
EDIT2:从my_database中完全取出抽象词后,我收到以下错误:
致命错误:类my_database包含32个抽象方法,因此必须声明为abstract或实现其余方法
我怎样才能解决这个问题?
定义为抽象的类可能无法实例化,并且包含至少一个抽象方法的任何类也必须是抽象的。 您可以在PHP的文档中阅读此内容: link
这是一个例子。
有一个抽象类( 请注意,抽象方法没有正文 - 它们不能有正文 - 它只是一个签名 ):
abstract class AbstractClass
{
// Force Extending class to define this method
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// Common method. It will be available for all children - they don't have to declare it again.
public function printOut() {
print $this->getValue() . "\n";
}
}
使用这样的类扩展抽象类( 请注意,所有抽象方法必须在具体类中定义 ):
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}
然后,您可以创建ConcreteClass1的实例:
$class1 = new ConcreteClass1;
你的课不应该是抽象的:
class my_database extends database {
public function set_value($value) {
$this->value = $value;
}
}
在OOP中,抽象类不能被实例化,它可以被扩展。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.