继承子方法

时间:2014-01-15 13:59:55

标签: php inheritance

好的,我想知道PHP中的父类是否可以从子类或“扩展”类访问或“继承”方法。例如,如果我的父类有一个名为foo的方法,而子类有一个名为bar的方法,我可以从bar调用foo吗?

问题2:假设我有一个名为“actions”的父类,它有一个名为“perform”的方法,它将参数“foo”作为字符串。然后我们分别有两个单独的类叫做“actionA”和“actionB”。每个子类包含一个名为“method-”className“”的方法,如果可能的话,我将如何根据“actions”类中“perform”方法提供的参数调用子方法?

2 个答案:

答案 0 :(得分:0)

父级可以调用子类的publicprotected方法,但不能调用private种方法。

答案 1 :(得分:0)

是和否。

不,因为这样父类无法独立工作。

是的,因为PHP为它提供了一个构造:抽象类。抽象类本身不能实例化,但其他类可以从中继承。抽象类中的抽象方法不必具有主体,并且必须由任何非抽象子类(如接口)实现。

好吧,让代码说:

<?php

// note the "abstract" keyword
abstract class ParentClass {

    public function foo() {
        $this->bar();
    }

    // again, note the "abstract" keyword and note how the method does
    // not have a body (i.e. not any actual code)
    abstract public function bar();
}

class ChildClass extends ParentClass {

    public function bar() {
        echo 'bar called!';
    }

}

$foo = new ParentClass(); // this will raise an error
$bar = new ChildClass(); // this will work
$bar->foo(); // this will echo "bar called!"
$bar->bar(); // ... as will this

?>