文章教程

9.2类的声明和实例生成

9/17/2020 9:40:31 PM 人评论 次浏览

9.2 类的声明和实例生成

以下案例介绍类的声明和实例生成,案例中将描述在酒店订房的客人。

【例9.1】(实例文件:ch10\9.1.php)

  <html>
  <head>
  <title> 类的声明和实例的生成</title>
  </head>
  <body>
  <?php
    class guests{
       private $name;
       private $gender;
       function setname($name){
            $this->name = $name;
       }
         function getname(){
             return $this->name;
       }
         function setgender($gender){
            $this->gender = $gender;
       }
         function getgender(){
             return $this->gender;
       }
    };
    $xiaoming = new guests;
    $xiaoming->setname("王小明");
    $xiaoming->setgender("男");
    $lili = new guests;
    $lili->setname("李莉莉");
    $lili->setgender("女");
    echo $xiaoming->getname()."\t".$xiaoming->getgender()."<br />";
    echo $lili->getname()."\t".$lili->getgender();
  ?>
  </body>
  </html>

运行结果如图9-1所示。

image

图9-1 程序运行结果

【案例分析】

(1)用class关键字声明一个类,而这个类的名称是guests。在大括号内写入类的属性和方法。其中$name和$gender为类guests的自有属性,用private关键字声明,也就是说只有在类内部的方法可以访问它们,类外部是不能访问的。

(2)setname()、getname()、setgender和getgender()就是类方法,它们可以对$name和$gender这两个属性进行操作。$this是对类本身的引用,用“->”连接类属性,格式如,$this->name,$this->gender。

(3)之后用new关键字生成一个对象,格式为$object = new Classname;,它的对象名是$xiaoming。当程序通过new生成一个类guests的实例,也就是对象$xiaoming的时候,对象$xiaoming就拥有了类guests的所有属性和方法。然后就可以通过“接口”也就是这个对象的方法(也就是类的方法的拷贝)来对对象的属性进行操作。

(4)通过接口setname($name)给实例$xiaoming的属性$name赋值为XiaoMing,通过setgender($gender)给实例$xiaoming的属性$gender赋值为male。同样道理,通过接口操作了实例$lili的属性。最后通过接口getname()和getgender()返回不同的两个实例的属性$name和$gender,并且打印出结果。

教程类别