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

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