PHP中类与对象的深刻思考

PHP通过class关键字加类名来定义一个类的格式如:

<?php

  class lei{

  //......

}

?>    //上述lei就是一个最简单的类

再来一个概念,类中的成员函数又称为什么呢?答:成员方法。成员方法就是在类中实现某个功能的函数,仅仅在这个类中实现~~

例如<?php

  class sport{

  function lanqiu()

  {

    //..........

  }

}

?>

上述类sport中定义的函数lanqiu()就是作用在类sport中的成员方法,你可以写一些函数实现的功能。

那什么是类的实例化?上述类已经定义了sport   类的成员方法也已经添加,假设这个成员方法的功能已经实现,那我们该如何使用这个类呢,我认为使用这个类的方法就是类的实例化,你不实例化你定义个类干啥啊==

继续,实例化是通过关键字new来声明一个对象然后使用如下格式:“对象名->成员方法”

看个实例,借鉴自(潘凯华.php从入门到精通)

<?php

  class SportObject

  {

    function beatBasketball($name,$height,$avoirdupois,$age,$sex)

    {

      if($height>180 and $avoirdupois<=100)

      {

        return $name.",符合打篮球的要求!";

      }

      else

      {

         return $name.",不符合打篮球的要求!";

      }

    }

  }

  $sport = new SportObject();    //这里sport就是一个实例化后的对象

  echo $sport->beatBasketball(‘明日‘,‘185‘,‘80‘,‘20周岁‘,‘男‘);  //调用成员方法

?>

 

结果为:明日,符合打篮球的要求!

 

那么什么是成员变量?就是类中的变量 定义类成员变量的格式   关键字   成员变量名

访问成员变量和访问成员方法一样   对象名—>成员变量

再来个实例

 

<?php
class SportObject
{
public $name; //定义成员变量
public $height;
public $avoirdupois;
public function bootFootBall($name,$height,$avoirdupois)  //定义成员方法
{
$this->name=$name;    //$this->作用是调用本类中的成员变量或成员方法
$this->height=$height;  //这里注意,$this->后面的变量是没有$符号的
$this->avoirdupois=$avoirdupois;
if($this->height<185 and $this->avoirdupois<85)    //这里$this->height也可写成$height
{
return $this->name.",符合踢足球的要求";
}
else
{
return $this->name.",不符合踢足球的要求";
}
}
}
$sport = new SportObject();
echo $sport->bootFootBall(‘明日‘,‘185‘,‘80‘);
?>

 接下来,类常量,定义类常量的关键字 const    例如  const PI=3.14159;

 

再来个例子

<?php
class SportObject
{
const BOOK_TYPE=‘计算机图书‘;    //声明常量,常量名前没有$符号
public $object_name;
function setObjectName($name)
{
$this->object_name = $name;
}
function getObjectName()
{
return $this->object_name;
}
}


$c_book = new SportObject();
$c_book -> setObjectName("PHP类");
echo SportObject::BOOK_TYPE."->";  //类名和常量名之间的两个冒号称为作用域操作符

//使用这个操作符可以在不创建对象的情况下调用类的常量、变量和方法。
echo $c_book -> getObjectName();

?>

 

 

当实例化一个对象后,经常要初始化这个对象,即对这个对象赋初始值,这时候可以采用构造方法,构造方法就是生成对象时自动执行的成员方法(它就是一个成员方法,类中的函数,只是最先运行罢了),作用就是初始化对象。

实例:

<?php

class SportObject //类名

{

public $name; //成员变量

public $height;

public $avoirdupois;

public $age;

public $sex;

public function __construct($name,$height,$avoirdupois,$age,$sex) //构造函数

{

$this->name=$name; //为成员变量赋初值

$this->height=$height;

$this->avoirdupois=$avoirdupois;

$this->age=$age;

$this->sex=$sex;

}

 

public function boot() //成员方式

{

if($this->height<185 and $this->avoirdupois<85)

{

return $this->name.",符合踢足球的要求!";

}

else

{

return $this->name.",不符合踢足球的要求!";

}

}

}

$sport = new SportObject(‘明日‘,‘185‘,‘80‘,‘20‘,‘‘); //一句话就初始化完了实例sport

echo $sport->boot();

?>

 

析构函数:与构造函数作用相反,是在最后才执行的成员方式。

实例:

<?php

class SportObject

{

public $name;

public $height;

public $avoirdupois;

public $age;

public $sex;

public function __construct($name,$height,$avoirdupois,$age,$sex)

{

$this->name=$name;

$this->height=$height;

$this->avoirdupois=$avoirdupois;

$this->age=$age;

$this->sex=$sex;

}

 

public function boot()

{

if($this->height<185 and $this->avoirdupois<85)

{

return $this->name.",符合踢足球的要求!";

}

else

{

return $this->name.",不符合踢足球的要求!";

}

}

 

function __destruct()

{

echo "<p><b>对象被销毁,调用了析构函数。</b></p>";

}

}

$sport = new SportObject(‘明日‘,‘185‘,‘80‘,‘20‘,‘‘);

echo $sport->boot();

?>

最后输出:

明日,不符合踢足球的要求!

对象被销毁,调用了析构函数。

 

 

继承实例:

<?php
class SportObject
{
public $name;
public $age;
public $avoirdupois;
public $sex;
public function __contruct($name,$age,$avoirdupois,$sex)
{
$this->name=$name;
$this->age=$age;
$this->avoirdupois=$avoirdupois;
$this->sex=$sex;
}

function show()
{
echo ‘这句话不会显示‘;
}
}

class BeatBasketBall extends SportObject
{
public $height;
function __construct($name,$height)
{
$this->name=$name;
$this->height=$height;
}

function show()
{
if($this->height>185)
{
return $this->name.",符合打篮球的要求!";
}
else
{
return $this->name.",不符合打篮球的要求";
}
}
}

class WeightLifting extends SportObject
{
function show()
{
if($this->avoirdupois<85)
{
return $this->name.",符合举重的要求";
}
else
{
return $this->name.",不符合举重的要求";
}
}
}

$beatbasketball = new BeatBasketBall("科丹",‘190‘);
$weightlifting = new WeightLifting("明日",‘185‘,‘80‘,‘20‘,‘男‘);
echo $beatbasketball->show()."<br>";
echo $weightlifting->show()."<br>";
?>

PHP中类与对象的深刻思考,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。