0

我怎么了 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();
4

1 回答 1

3

使用受保护而不是私有,因为您在范围 a 内运行它并且范围 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();
于 2013-04-21T21:01:03.800 回答