0

保護されたメソッドまたはコンストラクターを使用することは非常にまれであることを知っています。SOや他のサイトでこれに関する議論を読みました。私が持っているタスクはかなり単純です。プログラムから保護されたメソッド/コンストラクターにアクセスする必要があります。すべての属性/メソッドは保護されていると宣言する必要があります。

私のコードはこれに減らすことができます。私は基本的に、最も簡単な方法でこれを行うように求められます。私が考えることができるすべての解決策は、より高度な手法(「友達」など)を使用するか、ルールに反する公開機能を使用します。

ありがとうございました。

     class one
        {
         protected $attribute1;
        }

        class two extends one
        {
         protected $attribute2;
         protected $attribute3;
            protected function __construct($arg1, $arg2, $arg3)  
         {
          $this->attribute1= $arg1;
          $this->attribute2= $arg2;
          $this->attribute3= $arg3;

            }
        }

$object = new two(" 1", "2", "3");
4

1 に答える 1

4

プライベートまたは保護されたコンストラクターの目的は、クラスがクラスの外部からインスタンス化されるのを防ぐことです。

新しいオブジェクトを返すクラスで public static 関数を作成できますが、コンストラクターを保護またはプライベートにする場合は、直接作成することはできません。public として宣言されたものを持っている必要があります。そうしないと、クラスを使用できません。

于 2010-10-28T20:53:50.277 に答える