PHP
1, public
public
2、protected
3、private
1、Public
:公有的类成员
可以在任何地方访问,具体可以被哪些访问了:
● 定义该类的类(自身)
● 该类的子类
● 其他类
2、Protected
:受保护的类成员
● 定义该类的类(自身)
● 该类的子类
3、Private
protected
에서 세 가지 데이터 액세스 방법의 정의와 기능을 숙지하세요. 3, private
(1), 3가지 데이터 액세스 방법
1.Public
: Public 클래스 멤버는 어디에서나, 특히 액세스할 수 있는 항목에 액세스할 수 있습니다. ● 이 클래스를 정의하는 클래스(self) ● 이 클래스의 하위 클래스 ● 다른 클래스
2. Protected
: 보호되는 클래스 멤버
● 이 클래스를 정의하는 클래스( Self) ● 이 클래스의 하위 클래스 3. Private
: Private 클래스 멤버
요약: 제약 능력이 위에서 아래로 증가합니다.
위의 텍스트 설명만으로는 아직 간단하게 이해하기가 다소 어려우므로 이론적 + 실제적인 방식으로 이해해야 합니다. 그런 다음 특정 코드를 통해 이러한 세 가지 유형의 데이터 액세스를 이해해야 합니다. ? 각각의 특성은 무엇입니까? 마지막으로 바인딩 기능을 이해해 보겠습니다. (2) 특정 코드
설명: 모든 사람이 객체 지향을 더 잘 이해할 수 있도록 기사를 작성할 때 얕은 것부터 깊은 것까지, 쉬운 것부터 어려운 것까지 특정 규칙을 따르려고 노력하므로 각각을 씁니다. 기사는 이전 기사와 관련이 있습니다. 예를 들어 다음 코드 사례에서는 이전 기사의 코드를 확장하고 확장했습니다.
<?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 测试 //1、测试在类的外部可以访问 //创建乔丹对象 $jordon = new NbaPlayer("乔丹","1.98米","98公斤","公牛","23"); //输出乔丹对象 echo "名称= ".$jordon->name."<br/>";//结果能够输出来,说明在外部是可以访问Public类成员的 //2、测试在类的自身里面可以访问 //例子:比如构造函数里,我们可以直接通过$this->team //3、测试是否可以子类中可以访问 //例子:比如父类中定义的name 一样可以在子类(NbaPlayer)的构造函数中直接访问 ?>
연산 효과는 다음과 같습니다.
사례 2: protected의 정의를 알고, 2곳에서 접근 가능함을 증명합니다. (1. 자신이 정의한 클래스에서, 2. subclass)
<?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测试 //1、测试是否可以在自身类中可以访问 $jordon->getAddrInHuman();//结果OK,确实是可以访问 //2.测试是否可以在子类中访问 $jordon->getAddrInNbaPlayer();//结果OK,确实也是可以访问 //3.测试是否可以被外部访问 echo "在类外部访问addr=".$jordon->addr."<br/>";//结果报错,说明不行 ?>
연산 효과는 다음과 같습니다.
사례 3: private의 정의를 알고, 한 곳에서만 접근할 수 있음을 증명하세요(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();//结果报错,说明也不能在子类中访问 ?>
작동 효과는 다음과 같습니다.
요약:
1. Public: Public 클래스 멤버
어디에서나 액세스할 수 있으며, 특히 액세스할 수 있는 항목은
● 이 클래스를 정의하는 클래스(자체)
● 이 클래스의 하위 클래스
● 다른 클래스
2. 보호됨: 보호된 클래스 멤버
● 자체 및 해당 하위 클래스에서 액세스 가능3.
● Only It은 자신만 접근할 수 있습니다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我们在函数内部作假,来达到一个谎报年龄的目的 ?>
위 내용은 PHP 객체 지향의 세 가지 데이터 액세스 방법에 대한 자세한 설명(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!