PHP面向对象 – 封装

2021-06-19 18:04

阅读:466

标签:info   this   prot   png   string   inf   成员方法   技术   其他   

封装:
 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

上面的操作是靠以下访问控制符号来实现,规定了自身权限,使有的人能访问,有的人不能访问

例程:

[php] view plain copy
 
 技术分享技术分享
  1. "font-size:18px;">
  2. class Person{  
  3.     public   $name;  
  4.     private  $age;  
  5.     private  $salary;  
  6.     function  __construct($name,$age,$salary){  
  7.         $this->name=$name;  
  8.         $this->age=$age;  
  9.         $this->salary=$salary;  
  10.     }  
  11. }  
  12. $a1=new Person("小明",32,5000);  
  13. //正确显示,全局属性访问没有限制  
  14. echo "
    ".$a1->name."
    ";  
  15. //报错,私有属性不能在类外访问  
  16. //echo "
    ".$a1->age."
    ";   
  17. //报错,私有属性不能在类外访问  
  18. //echo "
    ".$a1->salary."
    ";  
  19. ?>  


php提供了三种访问控制符号来控制方法和属性(变量)的访问权限.

1. public  表示全局,可以在本类,类外部,子类 中使用
2. protected 表示受到保护, 可以在本类, 子类中使用,不能在类外使用n
3. private 表示私有, 只能在本类中使用,不能在类外使用,即在其他地方new了本类,也不能调用该方法

这三个控制修饰符号可以对 属性 和 方法进行修饰
1.  如果一个方法没有访问修饰符,则默认是public

2.  属性  必须指定访问修饰符,若没有访问修饰符,会报错。

3. 私有方法前面最好加下划线,如:private function _save(){}


//方法之间可以互相调用. 但是需要使用 $this引用 
function test11()
{
$this->test12();
}
protected function test12()
{
echo "test12 hello";
}

举例说明:

 

[php] view plain copy
 
 技术分享技术分享
  1. class Person1{  
  2.     public $name;  
  3.     protected  $age;  
  4.     private  $salary;  
  5.   
  6.   
  7.     function __construct($name,$age,$salary){  
  8.         $this->name=$name;  
  9.         $this->age=$age;  
  10.         $this->salary=$salary;  
  11.     }  
  12.   
  13.   
  14.     //成员方法  
  15.     public function showInfo(){  
  16.         //这里说明在本类中可以使用 public protected 和private 修饰的变量.  
  17.         echo $this->name."||".$this->age."||".$this->salary;  
  18.     }  
  19.     function test(){  
  20.         //调用showInfo()方法,利用this引用  
  21.         $this->showInfo();  
  22.     }  
  23. }  
  24. //创建一个人  
  25. $p1=new Person1("孙悟空",30,1000);  
  26. $p1->test();  
  27. ?>  

 

 

若想在类外去访问protected 变量或者 private 变量, 通常的做法是在类中创建 public 方法去访问 这些变量. 形式是
public function setXxx($val){
}
public function getXxx(){
}
public function showInfo(){
}

 

举例说明:

 

[php] view plain copy
 
 技术分享技术分享
    1. class Person2{  
    2.     public $name;  
    3.     protected  $age;  
    4.     private  $salary;  
    5.   
    6.     function __construct($name,$age,$salary){  
    7.         $this->name=$name;  
    8.         $this->age=$age;  
    9.         $this->salary=$salary;  
    10.     }  
    11.   
    12.     //成员方法  
    13.     public function showInfo(){  
    14.         //这里说明在本类中可以使用 public protected 和private 修饰的变量.  
    15.         echo "
      ".$this->name."||".$this->age."||".$this->salary;  
    16.     }  
    17. }  
    18. //创建一个人  
    19. $p1=new Person2("猪八戒",20,5000);  
    20. //访问其详细信息,由于属性age和salary分别为保护和私有变量,若在类外直接访问  
    21. //其属性会报错,但在类中创建一个公共属性的函数,通过函数即可访问这些变量。  
    22. $p1->showInfo();       
    23. ?>  

PHP面向对象 – 封装

标签:info   this   prot   png   string   inf   成员方法   技术   其他   

原文地址:http://www.cnblogs.com/limingxishuai666/p/7191660.html

上一篇:CSS盒模型

下一篇:PHP正则表达式概念


评论


亲,登录后才可以留言!