読み方プロトコル

protected

ぷろてくてぃど

大まかな意味

PHPのアクセス修飾子。
クラスのメソッドやプロパティに対して指定する事で、利用範囲を限定する事ができる。
protectedは、同じクラスか継承したクラスのみアクセス可能。

適当な使用例

継承を使わないとprotectedの意味がないので、複雑なプログラムを組まない限りは出番がない感じ。

<?php
	class VisibilityCheck{
		protected $protectedProperty = "protectedは継承先でも読めます。";
	}

	// VisibilityCheckを継承
	class VisibilityCheckProtected extends VisibilityCheck{
		public function checkProtected(){
			// 継承元のprotectedが使用可能。
			print $this->protectedProperty;
		}
	}

	$vc = new VisibilityCheckProtected(); // インスタンス生成

	$vc->checkProtected(); // publicなら、外部から呼び出せる。
出力結果

protectedは継承先でも読めます。


コメント

  1. よく、クラス継承すると、public protectedのメンバが
    サブクラスに受け継がれるという風に解釈している技術サイトが非常におおいです。
    public protectedの本当の意味って
    サブクラスからでもスーパークラスのメンバをコールできるというだけでオーバーライドしない限り、そのメンバはあくまでスーパークラスのものという解釈をしているのですが、サイト主さんは
    どのようなお考えですか?

  2. >通りすがり。さん

    コメントをありがとうございます。
    返信が遅くなってしまい、申し訳ございません。

    継承についてですが、プロパティ(メンバ変数)は
    インスタンス生成したときにスーパークラスのpublicやprotectedなプロパティも用意されるので、
    感覚的には「受け継がれる」という表現で良いように感じます。
    メソッド(メンバ関数)については、ご指摘の通りスーパークラスのメソッドも参照できる、
    という感じが強いですね。

    このサイトの目的は、そもそも「読み方」を調べられる、というだけのものです。
    それだけでは寂しいので、申し訳程度に解説も載せている…というスタンスです。
    本気で調べたい方には充分ではない内容になってしまい、申し訳ございません。

    誤りについてはご指摘をいただければ修正しますので、今後ともよろしくお願いします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です