下記のコードを実行すると、ブラウザには"さん、こんにちは。"という表示になりましたが、なぜその表示になるのかわからないので教えていただけないでしょうか。
想定していたのは、"ゲストさん、こんにちは。"でした。
php
1class User{ 2 private $name = null; 3 4 public function print_hello(){ 5 print $this->name; 6 print "さん、こんにちは。"; 7 } 8} 9 10class Guest extends User{ 11 private $name = "ゲスト"; 12} 13 14$guest = new Guest(); 15$guest->print_hello();
下記のように認識しています。
$guestにはGuestクラスのインスタンスが入っており、GuestクラスはUserクラスを継承している。
Guestクラスは継承しているため、Userクラスのprint_hello()を持っている。
Guestクラスにあるprint_hello()を呼び出すことで、$this->nameでGuestの$nameにアクセスする。
このような結果になったので、$this->nameがUserクラスの$nameにアクセスしているんだろうなと思ってはいるのですが、なぜGuestのインスタンスから読んだのに、$thisがUserクラスを指すのかがわかりません。
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/30 13:26
2018/06/30 14:52
2018/06/30 15:00
2018/07/01 07:12