您的位置:首页 > 其它

访问控制

2015-07-04 10:52 459 查看
探究public , private , protected三种类型的数据的访问控制

其中public能被自身 , 子类 ,外部 访问;

protected 能被自身和子类访问,不能被外部直接访问;

private 只能被自身访问,不能被子类和外部访问。

<?php

class Human{
public $name;
protected $height;  //只有自身和子类能被访问
public $weight;
private $isHungry = true;  //不能被子类访问

public function eat($food) {
echo $this->name." is eating ".$food."<br/>";
}

public function info() {
//通过自身调用private数据传到外部
echo "HUMAN:".$this->name.";".$this->height.";".$this->isHungry ."<br/>";
}
}

class NbaPlayer extends Human{

public $team="Bull";
public $playerNumber="23";

private $age = "40";//private的类成员只能在内部被访问

function __construct($name,$height,$weight,$team,$playerNumber) {
echo "In NbaPlayer constructor"."<br/>";
$this->name = $name;
$this->height = $height;
$this->weight = $weight;
$this->team = $team;
$this->playerNumber = $playerNumber;
//  echo $this->isHungry."<br/>";  调用出错
}

function __destruct() {
echo "Destroying".$this->name."<br/>";
}

//方法定义
public function run() {
echo "Running"."<br/>";
}

public function jump() {
echo "Jumping"."<br/>";
}
public function dribble() {
echo "Dribbling"."<br/>";
}
public function shoot() {
echo "shooting"."<br/>";
}
public function dunk() {
echo "Dunking"."<br/>";
}
public function pass() {
echo "passing"."<br/>";
}

public function getAge() {  //通过子类调用protected的数据,传到外部访问
//外部不能直接访问,所以可以在内部对数据进行改动,使外部不能得到真实数据
echo $this->name."'s age is ".($this->age-2) ."<br/>";
}
}

$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull","23");
$jordan->getAge() ."<br/>";
//$jordan->height;  直接访问height会出错

$jordan->info();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: