本文指标
把握PHP中数据拜访的3种形式的界说以及作用
一、public
二、protected
三、private
(一)、数据拜访的3种形式
一、Public
:私有的类成员
能够正在任何中央拜访,详细能够被哪些拜访了:
● 界说该类的类(本身)
● 该类的子类
● 其余类
二、Protected
:受维护的类成员
● 界说该类的类(本身)
● 该类的子类
三、Private
:公有的类成员
● 只有本身才能够拜访
总结:从上到下束缚才能是愈来愈强的
单纯从以上的文字形容,咱们了解起来仍是有点费力的,那末仍是依照实践+理论的形式来进行了解,那末接上去咱们就经过详细的代码来了解这3种数据拜访的形式正在PHP中究竟是若何完成的,到底它们各自的特性是甚么,最初来领会一下它们的束缚才能到底又是怎么。
(二)详细代码
阐明:为了让各人能更好的了解面向工具,以是写文章的时分,我也是只管即便遵照肯定的规定,由浅到深,由易到难,以是我写的每一篇文章都是以及上篇文章有肯定的联系关系,比方如下的代码案例,我又是正在上篇文章的代码上进行的拓展以及延长。
案例一:晓得public的界说,而后证实它能够正在3个中央均可以拜访(1.正在本人界说的类中,2.正在子类中 3.正在内部)
<?php //界说 “人” 类 class Human{ public $name = "";//姓名 public $height = "";//身高 public $weight = "";//体重 public function eat($food){ echo $this->name."正在吃".$food."<br/>"; } } //女主播 class Anchors extends Human{ public $name = ""; public $stageName = ""; public function __construct( $name,$stageName ){ $this->name = $name; $this->stageName = $stageName; } public function singing(){ echo "我是女主播,我会唱歌<br/>"; } } // Nba球员类 class NbaPlayer extends Human{ //由于父类曾经有了,以是就没有需求再写了,经过extends来完成 // public $name = "";//姓名 // public $height = "";//身高 // public $weight = "";//体重 public $team = "";//团队 public $playerName = "";//球员号码 public function __construct( $name,$height,$weight,$team,$playerName ){ $this->name = $name; $this->height=$height; $this->weight = $weight; $this->team = $team; $this->playName = $playerName; echo "结构函数执行了,以后工具是{$this->name}<br/>"; } //跑步 public function run(){ echo "跑步中<br/>"; } //腾跃 public function jump(){ echo "腾跃<br/>"; } //运球 public function dribble(){ echo "运球<br/>"; } //传球 public function pass(){ echo "传球<br/>"; } //投篮 public function shoot(){ echo "投篮<br/>"; } //扣篮 public function dunk(){ echo "扣篮<br/>"; } } //数据拜访测试 //public 测试 //一、测试正在类的内部能够拜访 //创立乔丹工具 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23"); //输入乔丹工具 echo "称号= ".$jordon->name."<br/>";//后果可以输入来,阐明正在内部是能够拜访Public类成员的 //二、测试正在类的本身外面能够拜访 //例子:比方结构函数里,咱们能够间接经过$this->team //三、测试能否能够子类中能够拜访 //例子:比方父类中界说的name 同样能够正在子类(NbaPlayer)的结构函数中间接拜访 ?>
运转成果以下:
案例二:晓得protected的界说,而后证实它能够正在2个中央均可以拜访(1.正在本人界说的类中,2.正在子类中 )
<?php //界说“人”类 class Human{ public $name = "";//姓名 public $height = "";//身高 public $weight = "";//体重 protected $addr = "长沙";//受维护的类 public function eat($food){ echo $this->name."正在吃".$food."<br/>"; } //测试protected类成员能否能够正在本身类中能够拜访 public function getAddrInHuman(){ echo "Human 本身类中的add=".$this->addr."<br/>"; } } //女主播 class Anchors extends Human{ public $name = ""; public $stageName = ""; public function __construct( $name,$stageName ){ $this->name = $name; $this->stageName = $stageName; } public function singing(){ echo "我是女主播,我会唱歌<br/>"; } //重写办法eat public function eat($food){ echo "我是女主播,我是边唱歌边吃{$food}<br/>"; } } class NbaPlayer extends Human{ //由于父类曾经有了,以是就没有需求再写了,经过extends来完成 // public $name = "";//姓名 // public $height = "";//身高 // public $weight = "";//体重 public $team = "";//团队 public $playerName = "";//球员号码 public function __construct( $name,$height,$weight,$team,$playerName ){ $this->name = $name; $this->height=$height; $this->weight = $weight; $this->team = $team; $this->playName = $playerName; echo "结构函数执行了,以后工具是{$this->name}<br/>"; } //测试protected类成员能否能够正在子类中能够拜访 public function getAddrInNbaPlayer(){ echo "正在NbaPlayer子类中addr=".$this->addr."<br/>"; } } //创立乔丹工具 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23"); //数据拜访测试 //protected测试 //一、测试能否能够正在本身类中能够拜访 $jordon->getAddrInHuman();//后果OK,的确是能够拜访 //2.测试能否能够正在子类中拜访 $jordon->getAddrInNbaPlayer();//后果OK,的确也是能够拜访 //3.测试能否能够被内部拜访 echo "正在类内部拜访addr=".$jordon->addr."<br/>";//后果报错,阐明没有行 ?>
运转成果以下:
案例三:晓得private的界说,而后证实它只能正在1个中央能够拜访(1.正在本人界说的类中)
<?php //界说“人”类 class Human{ public $name = "";//姓名 public $height = "";//身高 public $weight = "";//体重 private $isHungry = true;//测试公有变量能否能够正在子类中拜访 //为了让内部能够拜访private类成员 public function getPrivateInfo(){ return "private 变量 isHungry=".$this->isHungry."<br/>"; } } //女主播 class Anchors extends Human{ public $name = ""; public $stageName = ""; public function __construct( $name,$stageName ){ $this->name = $name; $this->stageName = $stageName; } public function singing(){ echo "我是女主播,我会唱歌<br/>"; } //重写办法eat public function eat($food){ echo "我是女主播,我是边唱歌边吃{$food}<br/>"; } } class NbaPlayer extends Human{ //由于父类曾经有了,以是就没有需求再写了,经过extends来完成 // public $name = "";//姓名 // public $height = "";//身高 // public $weight = "";//体重 public $team = "";//团队 public $playerName = "";//球员号码 public function __construct( $name,$height,$weight,$team,$playerName ){ $this->name = $name; $this->height=$height; $this->weight = $weight; $this->team = $team; $this->playName = $playerName; // echo "结构函数执行了,以后工具是{$this->name}<br/>"; } //测试private类成员能否能够正在子类中拜访 public function getIsHungryInNbaPlayer(){ echo "正在NbaPlayer子类中isHungry=".$this->isHungry."<br/>"; } } //创立乔丹工具 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23"); //数据拜访测试 //private测试 //1.测试公有变量是否被内部拜访 echo "公有变量isHungry =".$jordon->isHungry ."<br/>";//后果不克不及拜访,阐明private变量不克不及被子类拜访 //测试公有变量是否正在界说的类的外部拜访 echo $jordon->getPrivateInfo();//后果Ok,阐明能够 //测试公有变量能否能够正在子类中拜访 $jordon->getIsHungryInNbaPlayer();//后果报错,阐明也不克不及正在子类中拜访 ?>
运转成果以下:
总结:
一、Public:私有的类成员
能够正在任何中央拜访,详细能够被哪些拜访了:
● 界说该类的类(本身)
● 该类的子类
● 其余类
二、Protected:受维护的类成员
● 能够被其本身及其子类拜访
三、Private:公有的类成员
● 只有本身才能够拜访
4.为了让内部能够拜访private类成员,咱们能够经过正在类中界说一个public办法,而后正在public办法中前往private类成员
好,到了这里,想必各人对数据拜访应该有了一个比拟明晰的意识,那咱们如今来学致使用,用咱们学到的这个常识来处理如下的成绩,先本人考虑一下怎样做,而后再看谜底
成绩:NBA球员普通都没有想让其余人晓得本人的实在姓名,比方说我明明是40岁,然而我就想让他人认为是38岁
考虑中.......................
谜底揭晓:
代码以下:
<?php class Human{ public $name = "";//姓名 public $height = "";//身高 public $weight = "";//体重 } //女主播 class Anchors extends Human{ public $name = ""; public $stageName = ""; public function __construct( $name,$stageName ){ $this->name = $name; $this->stageName = $stageName; } public function singing(){ echo "我是女主播,我会唱歌<br/>"; } //重写办法eat public function eat($food){ echo "我是女主播,我是边唱歌边吃{$food}<br/>"; } } class NbaPlayer extends Human{ //由于父类曾经有了,以是就没有需求再写了,经过extends来完成 // public $name = "";//姓名 // public $height = "";//身高 // public $weight = "";//体重 public $team = "";//团队 public $playerName = "";//球员号码 //数据拜访 private $age = "40"; //end public function __construct( $name,$height,$weight,$team,$playerName ){ $this->name = $name; $this->height=$height; $this->weight = $weight; $this->team = $team; $this->playName = $playerName; echo "结构函数执行了,以后工具是{$this->name}<br/>"; } //跑步 public function run(){ echo "跑步中<br/>"; } //腾跃 public function jump(){ echo "腾跃<br/>"; } //运球 public function dribble(){ echo "运球<br/>"; } //传球 public function pass(){ echo "传球<br/>"; } //投篮 public function shoot(){ echo "投篮<br/>"; } //扣篮 public function dunk(){ echo "扣篮<br/>"; } //数据拜访 public function getAge(){ // echo $this->name."的age=".$this->age."<br/>"; //既然可以正在本身类中猎取到春秋,那末为理解决NBA球员没有想让他人晓得本人实在春秋的成绩 //咱们就能够对春秋进行操作-造假 让春秋更小 $age = $this->age-2; echo $this->name."的age=".$age."<br/>"; } } //创立乔丹工具 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23"); $jordon->getAge();//后果Ok 阐明春秋是能够猎取到的,既然能够猎取到age咱们正在函数外部作假,来达到一个谎报春秋的目的 ?>
运转成果以下:
总结:
1.晓得了正在PHP中数据拜访有三种方式,public,protected,private
2.晓得了3种数据拜访形式各自的特性
以上就是PHP面向工具之3种数据拜访形式详解(代码实例)的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 面向对象
抱歉,评论功能暂时关闭!