[英]How to access child function from parent class
class hydra {
var $dbcon;
function __construct($ezSQL){
$this -> dbcon=$ezSQL;
}
}
class user extends hydra{
function foo(){
echo "bar is: ".$this->dbcon;
}
}
然后,我致电:
$hydra = new hydra($ezSQL);
但是,这时出现以下错误:
Fatal error: Cannot instantiate abstract class hydra
如何设置一个将继承其所有子功能的类,因此我可以执行以下操作:
$hydra = new hydra("foobar");
$hydra -> foo();
输出:
酒吧是:foobar
您无法将子级的功能纳入parent 。 试想,妈妈从女儿那里得到她的表情吗? 不。它是从父母那里继承下来的孩子。
您提供的代码不会引发任何错误。 但是从错误看来,hydra是一个抽象类。 当您想将childs方法称为hydra时,应将该方法作为抽象。
abstract class hydra {
var $dbcon;
function __construct($ezSQL){
$this -> dbcon=$ezSQL;
}
abstract public function foo();
}
现在可以实例化user
但将foo()
方法称为hydra
。 在类型提示中提供了完整的帮助。
function dofoo(hydra $h){
$h->foo();
}
$user = new user("bar");
dofoo($user);
在这里,函数dofoo
将$h
视为hydra
实例。
我认为您对继承的想法是错误的。 父级不从子级继承功能,CHILD则从父级继承功能。 在您的情况下, hydra
没有函数foo()
。 类user
继承了构造函数和hydra
的属性,因此下面的代码将起作用。
$hydraChild = new user("foobar");
$hydraChild -> foo();
再一次,您将无法建立一个继承其所有子功能的类。 这不是面向对象编程的工作原理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.