이
의 차이가 명확하게됩니다 :
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() [...]
맥스는 "리암"를 반환합니다
때문에 리암 클래스가 아닌에서 getName()
전화 getFirstName()
그것을 확장하는 반에서 하나. 즉, 개인 메서드를 사용하면 클래스에서이 메서드를 정확하게 호출 할 때마다이 메서드를 사용하고 덮어 쓰지 않도록 할 수 있습니다.
일반 용어로 설명하면 다음과 같습니다.
개인적인 방법은 수업 내에서만 액세스 할 수 있습니다. 그것을 덮어 쓰거나 액세스 할 수 없으며 클래스를 확장하는 클래스에서 액세스 할 수도 없습니다.
보호 방법은 클래스를 확장하는 클래스 및 내부에 액세스 할 수 있습니다,하지만 당신은 외부 등으로부터 그들을 호출 할 수 없습니다 :
$max = new Max();
$max->iAmProtected();
이것은 둘 다 개인 또는 보호 방법과 작동하지 않습니다.
직접 액세스 할 수없는 것 같습니다. '$ info-> namedilam()'을 호출 할 수 있습니까? – alayor
당신은 public function kicu()를 private function notil()이라고 부르지 않습니다. – Sepultura
[public, private, protected의 차이점은 무엇입니까?] (http://stackoverflow.com/questions/4361553/what) - 공공 - 개인 - 보호의 차이) – dbrumann