0

このクラスの構造を見てみましょう:

class A
{
    public static function aa() { }
}

class B extends A
{
    public static function bb() { }
}

ここで、B:bb();有効A:aa();です。しかし、なぜB:aa();まだ機能するのですか?aaのメソッドを直接呼び出すということではないBでしょうか。ここで継承とオーバーライドが機能するのはなぜですか?

4

1 に答える 1

5

class B extends としてclass A、クラス B には、A にもあるすべての保護されパブリックメソッドがあります。

B:aa()コンパイラを呼び出すと、B:aa()がクラス B でオーバーライドされているかどうかが確認され、オーバーライドされていない場合は、親クラス (この場合はクラス A) が呼び出されます。

オブジェクト指向プログラミング (OOP) では、クラスを拡張することは継承とも呼ばれ、クラス B はクラス A からすべてのパブリック メソッドとプロテクト メソッドを継承します。

于 2012-09-30T15:28:00.737 に答える