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。