我有两个类,比如
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();
但它不起作用。
由于
答案 0 :(得分:3)
第二个示例中不需要parent
关键字,因为类C
扩展A
,它继承了所有成员函数和变量。因此,$c->b();
完全有效。以下是extends
关键字的文档link,其中说明了:
通常,您需要具有与另一个类似的变量和函数的类 现有的课程。实际上,定义泛型类是一种好习惯 这可以在你的所有项目中使用,并适应这个类 每个特定项目的需求。为了方便这一点,课程 可以是其他类的扩展。 扩展或派生类具有 基类的所有变量和函数(这是调用的 “继承”,尽管没有人死亡)和你加入的东西 扩展定义。
答案 1 :(得分:1)
当课程C
从A
延伸时,您可以使用此功能来B()
:
class C extends A {
public function D () {
$b = $this->B();
return 'd';
}
}
同样,从实例化的类C
开始,您应该使用$c->B()
来提及它。 parent::
构造仅用于在类方法中使用;它不能在类声明之外使用。
答案 2 :(得分:0)
使用有效的那个。
当实例继承函数时,它们可以直接从该对象调用。调用者不需要知道b
是C
的某个函数还是c
从其他类继承它。