あなたはこのようにそれを行うときの違いが明確になるだろう:リアムクラスでgetName()
通話getFirstName()
ので
class Liam {
private getFirstName() {
return "Liam";
}
public function getName() {
return $this->getFirstName();
}
}
class Max extends Liam {
private function getFirstName() {
return "Max";
}
}
class Peter extends Liam {
public function getLiamsName() {
return $this->getFirstName();
}
}
$max = new Max();
echo $max->getName();
// returns "Liam", not "Max" as you might expect
$peter = new Peter();
echo $peter->getLiamsName();
// PHP Fatal error: Uncaught Error: Call to private method Liam::getFirstName() [...]
マックスは、「リアムは」ありませんが返されますそれを拡張するクラスから1つ。つまり、プライベートメソッドでは、クラス内のどのメソッドでもこのメソッドを正確に呼び出すと、このメソッドが使用され、上書きされないことを確認できます。
一般的に説明すると:
プライベートメソッドはクラス内でのみアクセスできます。彼らはそれを上書きしたりアクセスしたりすることはできません。
保護されたメソッドは、クラス拡張クラスでと内部にアクセス可能ですが、あなたは次のように外からそれらを呼び出すことはできません:これは、プライベートまたは保護された方法では動作しませんどちらも
$max = new Max();
$max->iAmProtected();
。
あなたは直接アクセスしていないようです。 '$ info-> namedilam()'を呼び出せますか? – alayor
あなたはpublic function kicu()をprivateという名前の関数ではなく、ltam()と呼びます。 – Sepultura
[public、private、protectedの違いは何ですか?](http://stackoverflow.com/questions/4361553/what - 公的 - 私的 - および保護された - の違い) – dbrumann