1|2|3継承で威力を発揮するアクセス修飾子protected継承の最後に、新しいアクセス修飾子を紹介します。アクセス修飾子は連載第14回でpublicとprivateがあることを紹介しました。実は、もう1つ「protected」というのがあります。privateメンバは子クラスからアクセスできない早速、「protectedが、どのような働きをするのか」についてサンプルを作りながら見ていきましょう。ここでは、連載第15回のリスト3のCircleクラスを使います。phplesson/chap15/Circle.phpをファイルごとchap17フォルダ内にコピーしてください。次に、このCircleクラスを継承した以下のSphereクラスを作成してください。phplesson/chap17/Sphere.phpコメントにあるように、プロパティの半径と定数の円周率を使って球の表面積を計算するメソッドが1つだけです。このSphereクラスを利用する以下のuseSphere.phpを作成し、実行してください。phplesson/chap17/useSphere.php実行結果は、以下のようにエラーとなります。0エラーの原因は、エラーメッセージにもあるようにリスト9の(1)で存在しない$radiusプロパティにアクセスしていることです。確かに、$radiusプロパティは親クラスであるCircleクラスには記述されていますが、privateプロパティとなっています。privateプロパティは自クラス内でのみアクセス可能なので、子クラスからはアクセスできません(図3)。privateのこの性質はメソッドに対しても当てはまります。privateプロパティは子クラスからアクセスできない自クラスと子クラスのみでアクセス可能なprotectedこの問題を解決するために、$radiusプロパティをpublicにするという考え方もありますが、それではカプセル化が実現できません。そこで新しいアクセス修飾子である「protected」を導入します。Circleクラスの7行目を下記リスト11のように書き換えて、再度useSphere.phpを実行してください。phplesson/chap17/Circle.php実行結果は以下の通りです。314今度はエラーにならずに済みました。protectedは自クラスと子クラスからのみアクセス可能なメンバを表します(図4)。publicとは違い、外部のクラスや実行phpからアクセスすることはできません。Sphere::$radius」と、エラーになります。$sphere->radius;そのため、カプセル化は保たれています。次回はポリモーフィズム次回は、オブジェクト指向の3大特徴の1つであるポリモーフィズムを実現する方法である抽象クラスとインタフェースを扱います。今回のサンプルコード今回のサンプルコードはこちらからダウンロードできます。関連記事WordPress活用に欠かせない、PHPをWindowsにダウンロードしてインストール、アンインストールする本連載では、さまざまなソフトウェアのインストール、実行するためのセットアップ設定、実行確認、アンインストールの手順を解説する。今回は、PHPとは何か、PHPで動くツールの紹介、PHPのインストールとアンインストールについて解説。PHPプログラミングを始める参考にしてほしい。PHPにおけるクラスの書き方と呼び出し方——インスタンス、メソッド、プロパティ「PHPで、どのようにオブジェクト指向プログラミングをしていくか」を解説する連載。初回は、「クラス」の書き方と簡単な使い方、メソッド/クラス定義内関数、プロパティ/クラス定義内変数、マルチプルインスタンスについて紹介します。PHP(スクリプト言語)PHPは、HTMLへの埋め込みが可能なスクリプト言語(およびその処理系)。主としてWebアプリ開発に使用される。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。