我这里的OOP错了。
我想继承Class A
return_output
方法会做一些常见的事情,所以我不想在继承的类中写出它。
但是当我执行B->return_output()
时,我希望它在do_something
中运行Class B
方法,但我发现它始终从Class A
运行方法。
我应该用其他东西替换$this
吗?
class A {
private function do_something() {
// do something
}
public function return_output() {
$op = $this->do_something();
// add some wrappers to $op
return $op;
}
}
class B extends A {
private function do_something() {
// do something different
}
}
var newClass = new B;
echo B->return_output();
答案 0 :(得分:3)
使用protected而不是private,因为您在范围内运行它而且范围b无法访问私有范围a:
class A {
protected function do_something() {
echo('ado_something');
}
public function return_output() {
$op = $this->do_something();
// add some wrappers to $op
return $op;
}
}
class B extends A {
protected function do_something() {
echo('bdo_something');
}
}
$newClass = new B;
echo $newClass->return_output();