オブジェクト指向をさらに詳しく Progate:PHP講座3を終えて
未来電子テクノロジーでインターンをしているtakaminです。
Progateを使って勉強中で、PHPのオブジェクト指向をまとめます。
クラスプロパティ
何かクラス全体で処理する必要があるもの(exインスタンスの数など)のために、
インスタンスではなくクラスそのものにプロパティを付ける。
staticを付けるとクラスプロパティ
// ex)インスタンスが何個あるか。
class University{
private static $count = 0; // =0は初期値
public function__construct(){
self::$count++; //インスタンスが作られるたびにクラス自身のプロパティ$countを+1
} //インスタンスの数と$countが一致する。
public static function getCount(){
return self::$count ; //ゲッター
}
}
$TokyoUniv = new University('東京大学');
$OsakaUniv = new university('大阪大学');
継承
プロパティ、メソッドを他のクラスに引き継ぐ。
ex)
全国の大学
↓
西日本、東日本。
で分けようと思うが、正直「全国の大学」に共通なプロパティとメソッドをもとに「地域」追加すればいいから継承しよう。
class EastUniversity extends University{ //書き方。
private $area; //子クラスには独自プロパティを追加できる。
public function getType(){
return $this->area;
}
public function setType($type){
$this->type = $type;
}
}
オーバーライド
//親クラスと同じ名前のメソッドを小クラスで使うと、上書きされる。
//親クラスと同じ名前のメソッドを使いたいとき時(__constructなど)は、
parent::__construct(){
}
と、parent::を使う。
子クラスが親クラスのプロパティを操作したいとき
private クラスの中
protected クラスの中/子クラスの中 で操作可能範囲
public クラスの中/子クラスの中/外部からも
クラス条件
「インスタンスが○○のクラスであるとき」は
if($TokyoUniv instanceof EastUniv){ //EastUnivクラスにいるならば(true or false)
echo $TokyoUniv.'は西日本の大学です。'; //今回はfalseなので何も起こらない。
Author And Source
この問題について(オブジェクト指向をさらに詳しく Progate:PHP講座3を終えて), 我々は、より多くの情報をここで見つけました https://qiita.com/takamin3106/items/b8c4fe65a037232a694a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .