第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)