第10章 オブジェクト指向構文 / 第2回 模擬試験

PHPのアクセス修飾子に関する次の記述のうち、正しいものはどれか。

`public`宣言されたプロパティは、クラスの外部からアクセスできない。
`protected`宣言されたメンバーは、そのクラスと子クラスからアクセスできる。 正解
`private`宣言されたメンバーは、子クラスから自由にアクセスできる。
アクセス修飾子を省略すると、自動的に`private`として扱われる。
解説
`protected`が付いたプロパティ・メソッドは、それを定義したクラス自身と、そのクラスを継承した子クラスからアクセスできます(クラスの外部からは直接アクセスできません)。 他の選択肢が誤りである理由は次の通りです。 ・`public`が付いたメンバーは、クラスの外部を含めどこからでもアクセスできます。 ・`private`が付いたメンバーは、定義したクラス自身の内部でのみアクセスでき、子クラスからもアクセスできません。 ・メソッドのアクセス修飾子を省略した場合、PHPではデフォルトで`public`として扱われます(`private`ではありません)。 例: ``` class Base { public $a = 1; protected $b = 2; private $c = 3; function greet() { return 'hi'; } // 修飾子省略 → publicとして扱われる } ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.2節 カプセル化 p.489〜495)

あわせて読みたい解説記事