PHP中的多态性:虚拟函数覆盖父函数,但父函数仍被调用 我一直在C++编程,但已经移动到PHP了一段时间,看起来多态性在PHP中是不同的。我知道在PHP中,所有非私有(即公共/受保护)的函数实际上也是虚拟的。这是我的子类定义 class Child extends Parent { public function foo() { } }
然后我的父母看起来像PHP中的多态性:虚拟函数覆盖父函数,但父函数仍被调用 我一直在C++编程,但已经移动到PHP了一段时间,看起来多态性在PHP中是不同的。我知道在PHP中,所有非私有(即公共/受保护)的函数实际上也是虚拟的。这是我的子类定义 class Child extends Parent { public function foo() { } },php,Php,然后我的父母看起来像 class Parent { public function foo() { } } 我希望我的子类使用除foo()函数之外的所有父类代码-我希望子类使用自己的foo()函数 问题是仍然调用父级的foo()。有趣的是,我的IDE(NetBeans)说它被正确覆盖了 我正在父级和子级中使用$this->foo()。。这应该可以,是吗?它只是说“为当前对象执行函数foo”。。也许我在这里出错了?除非您调用parent::foo(),否则将不会调用父级的foo
class Parent {
public function foo() {
}
}
我希望我的子类使用除foo()
函数之外的所有父类代码-我希望子类使用自己的foo()
函数
问题是仍然调用父级的foo()
。有趣的是,我的IDE(NetBeans)说它被正确覆盖了
我正在父级和子级中使用
$this->foo()
。。这应该可以,是吗?它只是说“为当前对象执行函数foo”。。也许我在这里出错了?除非您调用parent::foo()
,否则将不会调用父级的foo()
。除非您调用parent::foo()
,否则将不会调用父级的foo()
。刚刚尝试:
class Child1 extends Parent1 {
public function foo() {
echo 'c';
}
}
class Parent1 {
public function foo() {
echo 'p';
}
}
$class = new Child1;
$class->foo();
打印“c”
你做的一切都对。刚刚试过:
class Child1 extends Parent1 {
public function foo() {
echo 'c';
}
}
class Parent1 {
public function foo() {
echo 'p';
}
}
$class = new Child1;
$class->foo();
打印“c”
你做的一切都是对的。
Parent::foo
在执行$child->foo()
时不应调用。您的代码可能有问题。你能发布一个展示这种行为的例子吗?大家好,谢谢大家的帮助。原来我很傻。。我提交了一个页面,在提交到的页面上,它创建了一个类的对象,该类在提交页面上定义,我包括了这个文件!!抱歉:-S.Parent::foo
在执行$child->foo()
时不应调用。您的代码可能有问题。你能发布一个展示这种行为的例子吗?大家好,谢谢大家的帮助。原来我很傻。。我提交了一个页面,在提交到的页面上,它创建了一个类的对象,该类在提交页面上定义,我包括了这个文件!!对不起:-S。