FC2ブログ

PHPのクラス継承とサブクラス

クラス継承とサブクラス

#11 クラスを継承してみよう
http://dotinstall.com/lessons/basic_php_advanced/6911
を参考に
PHPでの継承とサブクラスについて学習

クラスをつくり、拡張したいときには
継承を使う

これは extends すればいい

例えば、
class User を継承して
SuperUser というクラスを作りたいのなら
class UperUser extends user{}

とする
ちなみに、継承すると
User で定義した
メンバー変数とかユーザ関数も使えるし
さらに書き換えて別の機能を実装することもできる

これが継承というもの
PHP以外にも java とかで使われる機能

あとは、クラスの中に新しい関数を用意してみた
public function superSayHi(){
echo "URyyyyyyyyyyyyyyyy !";
}

そして
あとは実体化するため
$bob = new superUser("bob","dummy@dummybob.com");
とする

クラスは設計図
new でこのようにかくことで実体化させることができる

superUser クラスで
User クラスと同じ構造で実体化できるのは
継承により
public function __construct($name, $email) {
$this->name = $name;
$this->email = $email;
}
も受け継いでいるため
再度 コンストラクタを書く必要性がない

あとは
$bob->superSayHi();
とすれば
Uryyyyyyyyyyyyy!
と表示される

あと、継承に関しては
public
private
の他に
protected が存在する

protected で宣言したメンバー変数などは
定義したクラスや
それを継承してできたサブクラス(継承して拡張したクラスなど)
でも使える
private との違いは
private だと
作成したクラスではアクセスできるけど
これを元に作成したサブクラスでは作った変数とかが使えないというようになる

ためしに、
class User {}
の中になる
public $email;

protected $email;

と変更して

class SuperUser extends User{}
の中の
echo の部分を
public function superSayHi(){
echo "URyyyyyyyyyyyyyyyy !";
}
から
public function superSayHi(){
echo " URyyyyyyyyyyyyy!!! \n my email is ".$this->email;
}
と変更すると

URyyyyyyyyyyyyy!!! my email is dummy@dummybob.com
となり
. で連結した文字部分の
$this->email;
が表示できているのがわかる

もし、
protected ではなく private にするとエラーになる

アクセス可能な領域により使い分けることになる
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック