次のクラス階層を持つ:
class TheParent{
    public function parse(){
        $this->validate();
    }
}
class TheChild extends TheParent{
    private function validate(){
        echo 'Valid!!';
    }
}
$child= new TheChild();
$child->parse();
これが機能する一連のステップは何ですか?
問題は、そのコードを実行すると、次のエラーが発生することです。
Fatal error: Call to private method TheChild::validate() from context 'TheParent' on line 4
からTheChild継承するのは、のインスタンスを参照するために呼び出されるTheParentべきではないので、 ?に表示されます。$thisparse()$childvalidate()parse()
注:
いくつかの調査を行った後、この問題の解決策は、PHPマニュアルのこのコメントに従ってvalidate()関数を作成することを発見しましたが、この場合になぜ機能するのか完全には理解していません。  protected
abstract protected2番目の解決策は、親でメソッドを作成し、validate()それを子でオーバーライドすることです(これは冗長になります)protected。子のメソッドは親からアクセスできるため、最初の解決策にオーバーライドしますか?!!
この場合、継承がどのように機能するかを誰かに説明してもらえますか?