繁体   English   中英

如何从父类访问子函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM