0

我有 2 节课,比如

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

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

我知道用function bclass 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

您不需要parent第二个示例中的关键字,因为类Cextends A,它继承了它的所有成员函数和变量。所以,$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 回答