找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 2248|回复: 0

[原生PHP] php的public、protected、private三种访问控制模式的区别

[复制链接]

262

主题

124

回帖

9

广播

业务站长

积分
166
泰拉
180
水晶
2
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【我是小土豪】【宝剑回鞘】【泰拉达人】【奥运选手】

发表于 2019-10-29 16:15:13 | 显示全部楼层 |阅读模式
public: 公有类型
    在子类中可以通过self::var调用public方法或属性,parent::method调用父类方法
 在实例中可以能过$obj->var 来调用 public类型的方法或属性

protected: 受保护类型
    在子类中可以通过self::var调用protected方法或属性,parent::method调用父类方法
    在实例中不能通过$obj->var 来调用  protected类型的方法或属性

private: 私有类型
 该类型的属性或方法只能在该类中使用,在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法


self 和 parent 的区别
  a).在子类中常用到这两个对像。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用
     b).self:: 它表示当前类的静态成员(方法和属性) 与 $this 不同,$this是指当前对像


  1. <?php
  2. /**
  3. * parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性
  4. * self  可以调用父类中除私有类型的方法和属性外的所有数据
  5. */
  6. class User{
  7.     public $name;
  8.     private $passwd;
  9.     protected $email;   
  10.     public  function __construct(){
  11.         //print __CLASS__." ";
  12.         $this->name= 'simple';
  13.         $this->passwd='123456';
  14.         $this->email = 'bjbs_270@163.com';
  15.     }   
  16.     public function show(){
  17.         print "good ";
  18.     }   
  19.     public function inUserClassPublic() {
  20.         print __CLASS__.'::'.__FUNCTION__." ";
  21.     }   
  22.     protected  function inUserClassProtected(){
  23.         print __CLASS__.'::'.__FUNCTION__." ";
  24.     }   
  25.     private function inUserClassPrivate(){
  26.         print __CLASS__.'::'.__FUNCTION__." ";
  27.     }
  28. }

  29. class simpleUser extends User {   
  30.     public function __construct(){      
  31.         //print __CLASS__." ";
  32.         parent::__construct();
  33.     }
  34.      
  35.     public function show(){
  36.         print $this->name."//public ";      
  37.         print $this->passwd."//private ";
  38.         print $this->email."//protected ";
  39.     }
  40.      
  41.     public function inSimpleUserClassPublic() {
  42.         print __CLASS__.'::'.__FUNCTION__." ";
  43.     }
  44.      
  45.     protected function inSimpleUserClassProtected(){
  46.         print __CLASS__.'::'.__FUNCTION__." ";
  47.     }
  48.      
  49.     private function inSimpleUserClassPrivate() {
  50.         print __CLASS__.'::'.__FUNCTION__." ";
  51.     }
  52. }

  53. class adminUser extends simpleUser {
  54.     protected $admin_user;
  55.     public function __construct(){
  56.         //print __CLASS__." ";
  57.         parent::__construct();
  58.     }
  59.      
  60.     public function inAdminUserClassPublic(){
  61.         print __CLASS__.'::'.__FUNCTION__." ";
  62.     }
  63.      
  64.     protected function inAdminUserClassProtected(){
  65.         print __CLASS__.'::'.__FUNCTION__." ";
  66.     }
  67.      
  68.     private function inAdminUserClassPrivate(){
  69.         print __CLASS__.'::'.__FUNCTION__." ";
  70.     }
  71. }

  72. class administrator extends adminUser {
  73.     public function __construct(){      
  74.         parent::__construct();
  75.     }
  76. }

  77. /**
  78. * 在类的实例中 只有公有属性和方法才可以通过实例化来调用
  79. */
  80. $s = new administrator();
  81. print '-------------------';
  82. $s->show();
  83. ?>
复制代码

[发帖际遇]: 曲奇饼 在网吧通宵,花了 17 泰拉. 幸运榜 / 衰神榜
慵懒~慵懒~
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-12-22 23:13 , Processed in 0.148532 second(s), 35 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表