A등급{
<code> public $age = 50; private $money = 2000; static public $head = 1; public function tell(){ echo $this->age,'<br />'; echo self::$head,'<br />'; } static public function sayMoney(){ echo $this->money,'<br />'; }</code>
}
클래스 B가 A를 확장합니다.{
<code> public $age = 22; private $money = 10; public function subtell(){ parent::tell(); echo $this->age,'<br />'; } public function subMoney() { parent::sayMoney(); echo $this->money,'<br />'; }</code>
}
$b = new B();
$b->subtell();//22 1 22;
에코'
마지막 문장에서는 객체 컨텍스트에 없을 때 $this를 사용하면 오류가 발생한다고 보고합니다
그러나 $this는 subMoney()가 호출될 때 바인딩되지 않습니다. $this는 b 객체를 가리키고 parent::sayMoney()가 실행됩니다. $this는 바인딩되지 않습니다. sayMoney()가 실행될 때 왜 오류가 발생합니까? 이전 $b-> subtell() 호출과 무엇이 다른가요?
A등급{
<code> public $age = 50; private $money = 2000; static public $head = 1; public function tell(){ echo $this->age,'<br />'; echo self::$head,'<br />'; } static public function sayMoney(){ echo $this->money,'<br />'; }</code>
}
클래스 B가 A를 확장합니다.{
<code> public $age = 22; private $money = 10; public function subtell(){ parent::tell(); echo $this->age,'<br />'; } public function subMoney() { parent::sayMoney(); echo $this->money,'<br />'; }</code>
}
$b = new B();
$b->subtell();//22 1 22;
에코'
마지막 문장에서는 객체 컨텍스트에 없을 때 $this를 사용하면 오류가 발생한다고 보고합니다
그러나 $this는 subMoney()가 호출될 때 바인딩되지 않습니다. $this는 b 객체를 가리키고 parent::sayMoney()가 실행됩니다. $this는 바인딩되지 않습니다. sayMoney()가 실행될 때 왜 오류가 발생합니까? 이전 $b-> subtell() 호출과 무엇이 다른가요?
정적 메서드 내에서는 this
을 사용할 수 없습니다. 정적 속성과 메서드가 생성되면 호출할 수 있는 이 클래스의 인스턴스가 없을 수 있습니다. classA::staticMethod()
또는 $a = new classA(); $a->staticMethod()
을 사용할 수는 없습니다. this
잘못 읽었습니다
위 사람 말이 맞네요. 두 번째 함수는 static을 사용하기 때문에 $this를 사용할 수 없습니다
private은 비공개이며 상속된 클래스라도 클래스 내에서만 액세스를 허용함을 나타냅니다.
상속된 액세스가 허용되고 외부 액세스를 원하지 않는 경우 보호됨으로 변경할 수 있습니다.
추가로 해당 클래스의 인스턴스가 생성되고 $this는 어떤 클래스인지 나타냅니다.