下面再来看一下 protected 这个修饰符,如果想让属性还有方法只用在类的本身还有继承它的类里面,可以它。
打开 Track.php ... 把 track_name 这个属性前面的 private 换成 protected ... 这样它就变成了一个受保护的属性 ... 在类的外部是不能访问到它的。
回到 index.php ... 试一下去输出 track_name 这个属性的值 ...
回到浏览器 ... 提示 Fatal error: Cannot access protected property ... 不能访问受保护的属性 .. 说明在外部不能直接访问使用 protected 标记的属性 ... 不过这个属性在子类里面是可以访问的。
打开 Player.php ... 这里的 Player 这个类继承了 Track 类 ... 在这个类里,我们再去定义一个公开的方法 ... 叫做 the_track_name ...
在这个方法里,可以简单的去把继承过来的 track_name 这个属性的值输出到屏幕上 ...
<?php
class Player extends Track
{
public function the_track_name() {
echo $this->track_name;
}
}
再打开 index.php .... 用 Player 这个类去创建一个对象 ... 可以叫它 my_player ... 再去调用这个对象的 the_track_name 这个方法 ...
$my_player = new Player();
$my_player->the_track_name();
回到浏览器 ... 会显示 Magic 这个字符串 ... 这是在 Player 这个类里去访问继承过来的,用 protected 标记的 track_name 这个属性的值 ....
说明在子类里,可以访问到使用 protected 标记的属性 ...
再打开 Track.php ... 把这个 protected 换成 private ...
回到浏览器 ... 提示 Undefined property ... 未定义的属性。因为现在 track_name 这个属性是用 private 标记的,所以这个属性不会被继承。