好的,我想知道PHP中的父类是否可以从子类或“扩展”类访问或“继承”方法。例如,如果我的父类有一个名为foo
的方法,而子类有一个名为bar
的方法,我可以从bar
调用foo
吗?
问题2:假设我有一个名为“actions”的父类,它有一个名为“perform”的方法,它将参数“foo”作为字符串。然后我们分别有两个单独的类叫做“actionA”和“actionB”。每个子类包含一个名为“method-”className“”的方法,如果可能的话,我将如何根据“actions”类中“perform”方法提供的参数调用子方法?
答案 0 :(得分:0)
父级可以调用子类的public
和protected
方法,但不能调用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
?>