記事の内容
この記事では、PHPのクラスとインスタンスについて説明します。
簡単なサンプルも書くので、これさえ読めばPHPのクラスはバッチリです。
PHPのバージョンは、7系です。
オブジェクト指向
まずはオブジェクト指向(しこう)について説明します。
phpはオブジェクト指向のプログラミング言語です。
RubyやJavaといった言語もオブジェクト指向です。
他には手続き型や関数型という言語もあります。
興味がある人は、その違いも調べてみて下さい。
初学者にとっては、「オブジェクト指向って何?」という感じだと思います。
私もそうでしたし、最初は誰しもが疑問に持ちます。
オブジェクト指向とは、簡単に言うと、オブジェクトという一つの型(設計図)を決めることによって、いつでもその型から同じものを複製したり、あるいは似たものを複製することが出来ます。
プログラムを効率的に書くための仕組みと考えて下さい。
オブジェクト指向の三大要素
今すぐに全てを理解する必要はありませんが、オブジェクト指向の三大原則を頭の片隅に入れておきましょう。
将来、プログラミングの設計をする時に、きっと役に立つはずです。
カプセル化
カプセル化とは簡単にいうと、オブジェクトの中身を隠蔽して、できるだけ他のプログラムから干渉されないようにする仕組みです。
影響範囲が小さい、疎結合なプログラミングを心がけることで、大規模で安全なシステム構築に繋がります。
継承
継承とは、プログラムの再利用性を高める仕組みです。
共通部分を使い回す仕組みともいえます。
ポリモフィズム(多態性)
言葉だけで説明しようとすると、ちょっと難しいかもしれません。
オブジェクトを抽象化することで、オブジェクトの実際の振る舞いを知らなくても使えるようにする仕組みです。
クラスとインスタンス
では、実際にクラスを書いていきたいと思います。
Human(人間)クラスを作っていきます。
プロパティ
まず最初に、Humanにname(名前)とage(年齢)というプロパティ(属性)を実装します。
クラスを定義するためには、「class」というキーワードの後に、大文字で始まる単語と「{}」を書きます。
「class Human {}」「class Animal {}」「class Country」とか、何でも成り立ちます。
コンストラクタで初期化してインスタンス化
クラスとはあくまでも設計図なので、それだけでは何も実行をすることができません。
クラスを実行するためには、インスタンス化(new)する必要があります。
クラスをインスタンス化(new)する時に、初期値を設定します。
その初期値を設定(初期化)する作業をコンストラクタと呼びます。
例ではHumanクラスという設計図を元に、「のび太」という人間を生成する時に、名前(のび太)と年齢(11)を設定しています。
また、Humanクラスは設計図なので、「ブラックジャック」という人間を生成することもできます。
Humanクラスを元に「のび太」や「ブラックジャック」という人間を生成する処理のことを、「インスタンス化」と呼んでいます。
アロー演算子(->)を使うことで、インスタンスのプロパティにアクセスすることができます。
ここがポイント
- クラスは設計図なので、そのままでは実行することができない
- クラスを元にして、いくつものインスタンスを生成することができる
- インスタンス化する時には、「new」というキーワードを使う
- コンストラクタを使うことで、インスタンスを初期化することができる
メソッド
次にクラスに振る舞いを実装します。
ここでは、「introduce」というメソッドを実装しました。
クラスの継承
継承とはソースコードを再利用する仕組みです。
「extends」というキーワードを使います。
NewTypeHumanクラスは、Humanクラスを継承(extends)しています。
そして、NewTypeHumanにはintroduceメソッドは実装されていないのにも関わらず、introduceメソッドを使うことができています。
つまり、プログラムが再利用されています。