就像標題說我有這個代碼的問題:PHP抽象類和保護的方法
abstract class AClass {
abstract protected function a1();
abstract protected function a2();
public function show() {
return $this->a1() . "<br>" . $this->a2();
}
}
class A1 extends AClass {
protected function a1() {
return 'A1a1';
}
protected function a2() {
return 'A1a2';
}
}
class A2 extends AClass {
protected function a1() {
return 'A2a1';
}
protected function a2() {
return 'A2a2';
}
}
class AA {
public function __construct() {
$a11 = new A1();
$a22 = new A2();
$this->inter($a11);
$this->inter($a22);
}
private function inter(AClass $class) {
echo $class->show();
}
}
$aa = new AA();
它拋出:38
Fatal error: Call to protected A1::a1() from context 'AA' in C:\xampp\htdocs\Learning\index.php on line 38
線路是這樣的:
$a11 = new A1();
我不明白爲什麼它會拋出該錯誤,如果我不在該行調用a1()。
感謝和問候
哈維爾
您是否正在使用少數支持從該類中命名的構造函數的php版本? http://php.net/manual/en/language.oop5.dep.php –
我使用的PHP版本5.6.20看起來它支持他們,是嗎? –
從你的代碼看起來如此。你想要什麼樣的構造器行爲? –