クラスとオブジェクト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/02/21 17:40 UTC 版)
「PHP: Hypertext Preprocessor」の記事における「クラスとオブジェクト」の解説
PHPはクラスベースのオブジェクト指向構文をサポートしている。 以下に例を挙げる。 b";}public function __construct(){echo "abc: constructor", PHP_EOL;}}// クラスabcを継承したクラスdefを定義class def extends abc{public function __construct(){parent::__construct(); // 親クラスのコンストラクタを呼ぶecho "def: constructor", PHP_EOL;} // 親クラスのメソッドbをオーバーライドするpublic function b(){echo "Class def, Method b", PHP_EOL;}public function c(){parent::b();}}$c = new abc();$c->b();$f = new def();$f->b(); PHPではnewキーワードを使ってクラスをインスタンス化することが出来る。 クラスの継承はextendsキーワードを用いることで単一継承のみ可能で、多重継承はサポートされていない。 クラスのプロパティやメソッドの宣言および定義ではprivate/protected/publicの3種類の可視性が指定出来る(PHP4ではプロパティの宣言でvarキーワードが使われており、秘匿することが出来なかった)。 parentキーワードはサブクラスが継承したスーパークラスを表しており、サブクラスでメソッドをオーバーライドしたとき、スーパークラスの同名メソッドを呼ぶ場合などに用いることが出来る。 上記の例では、クラスdefのスーパークラスabcのメソッドbはオーバーライドされており、スーパークラスの同名メソッドをparent::b()で呼び出している。 実行結果は次のようになる。 abc: constructorClass abc, Method babc: constructordef: constructorClass def, Method bClass abc, Method b private/protected/publicおよびfinalの各キーワードはPHP5で導入された。 メソッドに対してfinalキーワードを用いると子クラスでのオーバーライドを禁止することが出来る。 クラスに対して適用すればクラスの継承が禁止される。 またstaticキーワードを用いることで、クラスのインスタンス化を行わなくてもアクセス可能なプロパティやメソッドを定義出来る。 class abc{// インスタンス化しなくてもアクセス出来るメソッドpublic static function b(){}}abc::b(); // アクセスするには クラス名::メソッド() という構文を用いる
※この「クラスとオブジェクト」の解説は、「PHP: Hypertext Preprocessor」の解説の一部です。
「クラスとオブジェクト」を含む「PHP: Hypertext Preprocessor」の記事については、「PHP: Hypertext Preprocessor」の概要を参照ください。
- クラスとオブジェクトのページへのリンク