我正在尝试理解类继承。
假设我有以下代码(PHP):
class A {
public function fire() {
echo "Fire!";
}
}
class B extends A {
public function water() {
echo "Water!";
}
}
class C extends B {
public function lightning() {
echo "Lightning!";
}
}
$cObject = new C();
$cObject->fire();
我的问题是
答案 0 :(得分:2)
如果你愿意的话,不可思议。没有限制我正在试图找出深度继承的级别。
是否存在调用当前对象实例中不存在的属性或方法的术语,但此属性或方法是否存在于父类或祖先类中?
对于类变量:no
。
对于类方法:yes
。将它们声明为private
:
class A {
private function test() {
echo 'test';
}
}
class B extends A {
public function __construct() {
$this->test();
}
}
$b = new B();
输出:
Fatal error: Call to private method A::test() from context 'B' in /home/thorsten/a.php on line 14
答案 1 :(得分:1)
1)“B”类是“A”。 “C”类是“B”,因此“C”是“A”。 “B”在“A”,“C”中拥有权利和特权的一切也都有。 C ++有一个私有继承的概念,这里有点时髦,但这是一般的想法。正如在另一个答案中所说,继承将在链被定义的范围内进行。
2)我认为你的意思是问“什么是一个被称为的函数未在派生类中定义,而是在基类中定义。这种类型的函数称为虚函数。据我所知,PHP中的每个类函数都是一个虚函数,可以重写(在派生类中重新实现),除非它被声明为 final 。