0

私は2つのクラスを持っています

class A {
     public function B () {
         return 'b';
     }
}

class C extends A {
     public function D () {
         return 'd';
     }
}

I doで使用function bすることを知っています。class C

class A {
     public function B () {
         return 'b';
     }
}

class C extends A {
     public function D () {
         $b = parent::B();
         return 'd';
     }
}

しかし、オブジェクトを開始するときはどうでしょうか? やらなければならないことはありますか(うまくいきます)

$c = new C();
$b = $c -> b();

それとも、このparentキーワードを使用する必要がありますか?

やってみました、

$c = new C();
$b = $c -> parent::B();

しかし、うまくいきません。

ありがとう

4

3 に答える 3

3

parent2 番目の例ではキーワードは必要ありません。class CextendsAにより、すべてのメンバー関数と変数が継承されるためです。したがって、$c->b();完全に有効です。キーワードに関するドキュメントへのリンクは次のとおりです。extends

多くの場合、別の既存のクラスと同様の変数と関数を持つクラスが必要になります。実際、すべてのプロジェクトで使用できる汎用クラスを定義し、このクラスを特定の各プロジェクトのニーズに合わせて調整することをお勧めします。これを容易にするために、クラスを他のクラスの拡張にすることができます。拡張または派生クラスには、基本クラスのすべての変数と関数(誰も死亡していないという事実にもかかわらず、これは「継承」と呼ばれます) と、拡張定義に追加するものが含まれます。

于 2012-06-01T13:42:34.357 に答える
1

クラスCが から拡張されてAいる場合、これを使用して関数に到達できますB()

class C extends A {
     public function D () {
         $b = $this->B();
         return 'd';
     }
}

同様に、インスタンス化されたクラスから、Cあなたが言及したようにそれを呼び出す必要があります$c->B()parent::コンストラクトは、クラス メソッド内でのみ使用することを意図しています。クラス宣言の外では使用できません。

于 2012-06-01T13:44:09.127 に答える
0

動作するものを使用してください。

インスタンスが関数を継承すると、そのオブジェクトから直接呼び出すことができます。b呼び出し元は、何らかの関数であるCか、またはc別のクラスから継承されているかどうかを認識する必要はありません。

于 2012-06-01T13:40:47.480 に答える