裏メニュー第三週 †クラスとオブジェクト †PHPのクラスとオブジェクトについて解説します。 クラスとオブジェクトの概要 †クラスとはオブジェクトの設計図です。 オブジェクトの設計図であるクラスは次のような情報を持ちます。 各々の情報については後述します。
"class ..." から始まる2行目から26行目の部分をクラス定義と呼びます。 コンストラクタとデストラクタ †コンストラクタはクラスからオブジェクトを生成するときに呼ばれる特別な関数です。 デストラクタはオブジェクトを破棄するときに呼ばれる特別な関数です。 作成するクラスの目的次第でコンストラクタやデストラクタの定義を省略することもあります。 メンバ関数とメンバ変数 †メンバ関数はオブジェクトに属する関数です。 先述の通り、メンバ関数は「$オブジェクト->メソッド名()」の形式で呼び出すことができます。 メンバ変数はオブジェクトに属する変数です。 <?php class Sample { var $member1; var $member2; function __construct() { $this->member1 = 3.14; // メンバ変数$member1に3.14を代入 $this->member2 = 'Hello, World!!'; // メンバ変数$member2に'Hello, World!!'を代入 } } $sample = new Sample(); // オブジェクトを生成する(同時にコンストラクタが呼ばれる) echo $sample->member1; //=> 3.14 echo $sample->member2; //=> 'Hello, World!!' ?> この例ではSampleクラスのコンストラクタでメンバ変数を初期化しています。 クラスの継承 †あるクラスの定義を元にクラスを拡張したいことがあります。
クラスの継承はextendsというキーワードを使用して行います。 <?php class SampleA { var $a; function __construct() { $this->a = 'a'; } function foo() { echo "I'm a function foo() defined at SampleA.\n"; } function hoge() { echo "I'm a function hoge() defined at SampleA.\n"; } } class SampleB extends SampleA { // メンバ変数の追加 var $b; // コンストラクタの変更 function __construct() { $this->b = 'b'; parent::__construct(); // parent::__construct() で親クラスのコンストラクタを呼び出す } // メンバ関数の書き換え(オーバーライド) function foo() { echo "I'm a function foo() defined at SampleB.\n"; } // メンバ関数の追加 function bar() { echo "I'm a function bar() defined at SampleB.\n"; } } $sample_a_obj = new SampleA(); $sample_b_obj = new SampleB(); $sample_a_obj->foo(); //=> I'm a function foo() defined at SampleA. $sample_b_obj->foo(); //=> I'm a function foo() defined at SampleB. $sample_b_obj->hoge(); //=> I'm a function hoge() defined at SampleA. $sample_b_obj->bar(); //=> I'm a function bar() defined at SampleB. echo $sample_b_obj->a . "\n"; //=> a echo $sample_b_obj->b . "\n"; //=> b ?> クラスの継承元を親クラスと呼びます*5。 宿題 †親クラスとして哺乳類クラス(Mammal)を定義し、それを継承した子クラスとして人間クラス(Human)も定義してください。 Mammalクラスは次のメンバ変数とメンバ関数を持ちます。
Humanクラスは次のメンバ変数とメンバ関数を持ちます。
Humanクラスの老化は成長を伴います。成長とは例えば次のようなことです。
細かく指定していない部分については自由に記述してください。 参考資料 † |