php之类和对象
php之类和对象
1、类和对象
类的基本声明格式:
class 类名{
//类体
}
用class实现类的定义,例如:
class point
{
var $x;//点的x坐标
var $y;//点的y坐标
function setx($px=0) //设置x坐标值
{
$this->x=$px;
}
function sety($py=0) //设置y坐标值
{
$this->y=$py;
}
function getx() //得到x坐标值
{
return $this->x;
}
function gety() //得到y坐标值
{
return $this->y;
}
}
用new实现对象的创建,方法:"$对象名=new 类名"
$mypoint=new point;
$mypoint->setx(10);//引用类中的方法可以使用"->"
$mypoint->sety(10);
还可以通过赋值操作来赋值对象
$newpoint=$mypoint;
2、类的使用与实例化
class point
{
var $x;//点的x坐标
var $y;//点的y坐标
function point()
{
$this->x=0;
$this->y=0;
}
function setx($px=0)
{
$this->x=$px;
}
function sety($py=0)
{
$this->y=$py;
}
function getx()
{
return $this->x;
}
function gety()
{
return $this->y;
}
}
$mypoint=new point;
$var1=$mypoint->getx();
$var2=$mypoint->gety();
echo"$var1,$var2<br>";
$mypoint->setx(10);
$mypoint->sety(10);
$var1=$mypoint->getx();
$var2=$mypoint->gety();
echo"$var1,$var2<br>";
构造函数也可以接受参数,可以在对象实例化时指定初始化的值,例如:
class point
{
var $x;
var $y;
function point($x=0,$y=0)
{
$this->x=$x;
$this->y=$y;
}
function getx()
{
return $this->x;
}
function gety()
{
return $this->y;
}
}
$mypoint=new point(10,10);
$var1=$mypoint->getx();
$var2=$mypoint->gety();
echo "$var1,$var2<br>";
3、类的继承与多态
用extends实现类的继承。方法:class 父类名 extends 子类名//
class point
{
var $x;
var $y;
function point($x=0,$y=0)
{
$this->x=$x;
$this->y=$y;
}
function setx($px=0)
{
$this->x=$px;
}
function sety($py=0)
{
$this->y=$py;
}
function getx()
{
return $this->x;
}
function gety()
{
return $this->y;
}
function moveto($x,$y)
{
if($x<0||$y<0)
{
echo"move failed!<br>";
return;
}
$this->x=$x;
$this->y=$y;
echo"move success!<br>";
}
}
class circle extends point
{
var $radius;
function circle($x=10,$y=10,$r=5)
{
$this->x=$x;
$this->y=$y;
$this->radius=$r;
}
function setradius($r)
{
$this->radius=$r;
}
function getradius($r)
{
return $this->radius;
}
function moveto($x,$y)
{
if($x<($this->radius)||$y<($this->radius))
{
echo"move failed!<br>";
return;
}
$this->x=$x;
$this->y=$y;
echo"move success!<br>";
}
}
$mypoint=new point(20,20);
$mycircle=new circle(20,20,10);
$mycircle->setx(30);
$mypoint->moveto(5,5);
$mycircle->moveto(5,5);