php面向对象基础(二)
面向对象三大特性
1.封装
目的:为了使类更加安全
做法:
a.将成员变量变为私有的
b.做一个成员方法来间接访问
c.在该方法里边加限制条件
class Ren
{
private $age;//18-50之间
private $name;
//魔术方法,给变量赋值
function __set($n,$v)
{
if($n=="age")
{
if($n>=18&&$n<=50)
{
$this->$n = $v;
}
}
else
{
$this->$n = $v;
}
}
//魔术方式,取变量值
function __get($n)
{
return $this->$n;
}
//以下此方法仅适用于一个或者两个变量
/*function setAge($n)
{
if($n>=18&&$n<=50)
{
$this->age=$n;
}
}
function getAge()
{
return $this->age;
} */
}
$r=new Ren();
$r->__set("age",20);
$r->age=20;
$r->name="张三";
var_dump($r);
2.继承
子类可以继承父类的一切(除了私有成员之外)
特点:单继承
class Ren
{
private $name;
function Run()
{
echo "跑步:<br>";
}
}
class China extends Ren //extends继承自谁
{
//重写override
function Run()
{
parent::Run();
echo "中国人跑步";
}
}
$c=new China();
$c->Run();
var_dump($c);
3.多态(弱类型语言实现不了多态)
定义:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,该引用在调用方法的时候所表现出的不同