首页 > 开发 > PHP > 正文

分享下php5类中三种数据类型的区别

2024-05-04 23:30:42
字体:大 中 小
来源:转载
供稿:网友

这篇文章主要介绍了php5类中三种数据类型的区别,需要的朋友可以参考下

public: 公有类型

在子类中可以通过self::var 来调用 public类型的方法或属性 可以通过parent::method 来调用父类中的方法

在实例中可以能过$obj->var 来调用 public类型的方法或属性

protected: 受保护类型

在子类中可以通过self::var 来调用 protected类型的方法或属性 可以通过parent::method 来调用父类中的方法

在实例中不能通过$obj->var 来调用 protected类型的方法或属性

private: 私有类型

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

2.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.  
  30. class simpleUser extends User {  
  31. public function __construct(){  
  32. //print __CLASS__." "; 
  33. parent::__construct(); 
  34. } 
  35.  
  36. public function show(){ 
  37. print $this->name."//public ";  
  38. print $this->passwd."//private "; 
  39. print $this->email."//protected "; 
  40. } 
  41.  
  42. public function inSimpleUserClassPublic() { 
  43. print __CLASS__.'::'.__FUNCTION__." "; 
  44. } 
  45.  
  46. protected function inSimpleUserClassProtected(){ 
  47. print __CLASS__.'::'.__FUNCTION__." "; 
  48. } 
  49.  
  50. private function inSimpleUserClassPrivate() { 
  51. print __CLASS__.'::'.__FUNCTION__." "; 
  52. } 
  53. } 
  54.  
  55. class adminUser extends simpleUser { 
  56. protected $admin_user; 
  57. public function __construct(){ 
  58. //print __CLASS__." "; 
  59. parent::__construct(); 
  60. } 
  61.  
  62. public function inAdminUserClassPublic(){ 
  63. print __CLASS__.'::'.__FUNCTION__." "; 
  64. } 
  65.  
  66. protected function inAdminUserClassProtected(){ 
  67. print __CLASS__.'::'.__FUNCTION__." "; 
  68. } 
  69.  
  70. private function inAdminUserClassPrivate(){ 
  71. print __CLASS__.'::'.__FUNCTION__." "; 
  72. } 
  73. } 
  74.  
  75. class administrator extends adminUser { 
  76. public function __construct(){  
  77. parent::__construct(); 
  78. } 
  79. } 
  80.  
  81. /** 
  82. * 在类的实例中 只有公有属性和方法才可以通过实例化来调用 
  83. */ 
  84. $s = new administrator(); 
  85. print '-------------------'; 
  86. $s->show(); 
  87. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表