一起源码网

  • www.171739.xyz
  • 全球最大的互联网技术和资源下载平台
搜索
猜你喜欢
查看: 7477|回复: 1
打印 上一主题 下一主题

php中public,private,protected属性的定义、用法、区别实例详解

[复制链接]

0

主题

0

帖子

1万

积分

钻石会员

Rank: 8Rank: 8

积分
17424
QQ
跳转到指定楼层
楼主
发表于 2020-3-19 18:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
public: 公有属性或方法

在子类中可以通过self::var 或self::method 来调用 ,可以通过parent::method来调用父类中的方法,但不能调用公有属性.

在实例中可以通过$obj->var或self::method 来调用

protected: 受保护类型

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

private: 私有类型

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

2.self 和 parent 的区别
a).在子类中常用到这两个。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用

b).self:: 它表示当前类的成员(方法和属性) 与 $this 不同,$this是指当前对象

<?php
class BaseClass {
  public $public = 'public';
  private $private = 'private';
  protected $protected = 'protected';
  function construct(){
  }
  function print_var(){
    print $this->public;echo '<br />';
    print $this->private; echo '<br />';
    print $this->protected; echo '<br />';
  }
}

class Subclass extends BaseClass {
  // public $public = 'public2';
  protected $protected ='protected2';
  function construct(){
    echo $this->protected;//可以访问,因为类中定义为受保护的,所以在本类或子类中可以,子类中还可以重复付值
    echo '<br />';
    echo $this->private;//error 因为是私有的只有在定义她的类baseclass中可以用
  }
}
  $obj1 = new BaseClass();
  $obj1->print_var();
  //echo $obj1->protected;//error 因为是受保护的,只有在本类内部或子类父类中可以调用
  //echo $obj1->private;//error 同上私有的,只有在本类内调用
  echo $obj1->public;
  echo "<hr />";
  $obj2 = new Subclass();
  echo '<br />';
  echo $obj2->public;echo '<br />';
  echo $obj2->protected;
  //echo $obj2->private;//error
  //echo $obj2->protected;//error
?>

总结

public 表示全局,类内部外部子类都可以访问;
private表示私有的,只有本类内部可以使用;
protected表示受保护的,只有本类或子类或父类中可以访问;

分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

0

主题

19

帖子

141

积分

注册会员

Rank: 2

积分
141
沙发
发表于 2022-9-9 09:46 来自手机 | 只看该作者
源代码下载网址
回复

使用道具 举报

一起源码让程序更轻更快

www.171739.xyz

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

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