PHP父级并在不在类本身的代码中使用它?

时间:2012-06-01 13:38:30

标签: php oop parent extends

我有两个类,比如

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

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

我知道要在我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();

但它不起作用。

由于

3 个答案:

答案 0 :(得分:3)

第二个示例中不需要parent关键字,因为类C扩展A,它继承了所有成员函数和变量。因此,$c->b();完全有效。以下是extends关键字的文档link,其中说明了:

  

通常,您需要具有与另一个类似的变量和函数的类   现有的课程。实际上,定义泛型类是一种好习惯   这可以在你的所有项目中使用,并适应这个类   每个特定项目的需求。为了方便这一点,课程   可以是其他类的扩展。 扩展或派生类具有   基类的所有变量和函数(这是调用的   “继承”,尽管没有人死亡)和你加入的东西   扩展定义。

答案 1 :(得分:1)

当课程CA延伸时,您可以使用此功能来B()

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

同样,从实例化的类C开始,您应该使用$c->B()来提及它。 parent::构造仅用于在类方法中使用;它不能在类声明之外使用。

答案 2 :(得分:0)

使用有效的那个。

当实例继承函数时,它们可以直接从该对象调用。调用者不需要知道bC的某个函数还是c从其他类继承它。