zoukankan      html  css  js  c++  java
  • 复习控制访问权限

    一个类的实例,在类外调用类的私有属性失败的例子:

    <?php
      class student
      {
          private $no;
          private $name;
          private $gender;
          private $age;
    
        private   function show_age(){
              echo"name is $this->name.<br />";
              }
          function ask_age(){
              $this->show_age();
              }
          
          function set_data($arr)
          {
              $this->no=$arr["no"];
              $this->name=$arr["name"];
              $this->gender=$arr["gender"];
              $this->age=$arr["age"];
              }
              
              function grow($i){
                  $this->age+=$i;
                  }
          function get_data(){
              echo"<br />
      <b>学生信息</b><br />
      ";
      echo "学号:$this->no<br />
      ";echo "姓名:$this->name<br />
      ";echo "性别:$this->gender<br />
      ";echo "年龄:$this->age<br />
      ";
              }
          }
      
    
     $s=new student;
          $temparr=array("no"=>"001","name"=>"lisa","gender"=>"male","age"=>"22");
     
      $s->set_data($temparr);
    
    echo "$s->age";
     
         
        ?>


    显示:Fatal error: Cannot access private property student::$age in
    C:\xampp\htdocs\v\v.php on line 55

    调用私有方法失败:

    <?php
      class student
      {
          private $no;
          private $name;
          private $gender;
          private $age;
    
        private   function show_age(){
              echo"name is $this->name.<br />";
              }
          function ask_age(){
              $this->show_age();
              }
          
          function set_data($arr)
          {
              $this->no=$arr["no"];
              $this->name=$arr["name"];
              $this->gender=$arr["gender"];
              $this->age=$arr["age"];
              }
              
              function grow($i){
                  $this->age+=$i;
                  }
          function get_data(){
              echo"<br />
      <b>学生信息</b><br />
      ";
      echo "学号:$this->no<br />
      ";echo "姓名:$this->name<br />
      ";echo "性别:$this->gender<br />
      ";echo "年龄:$this->age<br />
      ";
              }
          }
      
    
     $s=new student;
          $temparr=array("no"=>"001","name"=>"lisa","gender"=>"male","age"=>"22");
     
      $s->set_data($temparr);
    
    $s->show_age();
     
         
        ?>

    Fatal error: Call to private method student::show_age() from context ''
    in C:\xampp\htdocs\v\v.php on line 55

    通过调用公共方法,来实现调用私有方法:

    <?php
      class student
      {
          private $no;
          private $name;
          private $gender;
          private $age;
    
        private   function show_age(){
              echo"name is $this->name.<br />";
              }
          function ask_age(){
              $this->show_age();
              }
          
          function set_data($arr)
          {
              $this->no=$arr["no"];
              $this->name=$arr["name"];
              $this->gender=$arr["gender"];
              $this->age=$arr["age"];
              }
              
              function grow($i){
                  $this->age+=$i;
                  }
          function get_data(){
              echo"<br />
      <b>学生信息</b><br />
      ";
      echo "学号:$this->no<br />
      ";echo "姓名:$this->name<br />
      ";echo "性别:$this->gender<br />
      ";echo "年龄:$this->age<br />
      ";
              }
          }
      
    
     $s=new student;
          $temparr=array("no"=>"001","name"=>"lisa","gender"=>"male","age"=>"22");
     
      $s->set_data($temparr);
    
    $s->ask_age();
     
         
        ?>

    显示:name is lisa.

  • 相关阅读:
    IO模型
    opencv操作(二)
    Opencv基于python的基本操作(一)
    Django路由层与视图层、pycharm虚拟环境
    Django实现简单的用户添加、删除、修改等功能
    初识Django
    前端框架Bootstrap
    JQuery
    JavaScript之BOM和DOM
    JavaScript学习笔记
  • 原文地址:https://www.cnblogs.com/4php/p/2807943.html
Copyright © 2011-2022 走看看