2016/3/21 面向对象: ①定义类 ②实例化对象 ③$this关键字 ④构造函数 ⑤析构函数 ⑥封装 ⑦继承

时间:2023-03-08 16:58:14
2016/3/21  面向对象: ①定义类  ②实例化对象  ③$this关键字  ④构造函数  ⑤析构函数 ⑥封装 ⑦继承

一:定义类   二:实例化对象

 //定义类
class Ren
{
var $name;
var $sex;
var $age; function Say()
{
echo "{$this->name}在说话";
}
}
//实例化对象
$Ren = new Ren();
//调用对象的成员:
$Ren->name = "张三";
$Ren->Say();

显示结果:

2016/3/21  面向对象: ①定义类  ②实例化对象  ③$this关键字  ④构造函数  ⑤析构函数 ⑥封装 ⑦继承

三:$this关键字

$this->name;  this代表该对象,如果要在成员方法中调用成员变量,一定要使用$this找出该成员变量

四:构造函数:

①html5以前,构造函数名必须与类型相同

②执行时间特殊,最早执行,作用成员变量初始化

无参:

 function __construct()
{
echo "空参构造函数";
}

有参:

 function __construct($n,$s,$a)
{
$this->name = $n;
$this->sex = $s;
$this->age = $a;
}

五:析构函数:

 function __destruct()
{
echo "析构函数作用断开连接销毁释放空间";
}

六:封装:private   set  get

成员变量 定义访问修饰符 直接把var去掉  换public private protect

将类里面的成员变量加一个private修饰符变成私有的,目的是为了保护类里面的成员不被外界随意访问,从而确保类的安全性。将变量设置为私有,如何去访问:

①自己写函数get函数set函数,然后来对变量赋值和取值
②用系统自带的__get()函数和__set()函数来实现类里面的变量赋值取值

 function __set($name,$value)
{
$this->$name = $value;
}
function __get($name)
{
return $this->$name;
}

七:继承

继承一般是单继承:一个儿子只能有一个父亲

①子类可以继承父类的所有成员
②子类可以对父类的成员方法进行重写:(函数名一样)

要在子类方法中调用父类的方法,用parent::Say();

 function Say()
{
parent::Say(); echo "hello";
}

final关键字可以定义类为最终类,不可被继承。

静态:关键字:static

如果成员声明了为静态的,那么该成员是属于该类的,不是属于对象的

 //如何调用静态的成员:
AA::$height = 10; //用类名加双冒号调用类的静态成员
AA::Hao();
 //面向对象
class Ren
{ private $sex;
private $name;
//方法 访问成员变量的方法
private $age;//封装用private
//封装:访问成员变量的方法
public function SetAge($age)
{
if($age>18 && $age<80)
{
$this->age=$age;
}
}
//成员变量 定义访问修饰符 直接把var去掉 换public
//封装:简便方法赋值
public function __set($name,$value)
{ if ($name=="age")
{
if ($value>18 && $value<80)
{
$this->$name=$value;
}
}
else{
$this->$name=$value;
}
}
//封装:简便方法获取值
public function __get($name)
{
return $this->$name;
} public function Say() //成员方法
{
echo $this->name."这个人在讲话";
} //1,构造函数,写法特殊,必须与类名相同 2,执行时间特殊 最早执行 作用成员变量初始化
function __construct($name,$sex)
{
$this->name=$name;
$this->sex=$sex;
}
//2,析构函数:对象销毁时自动用 用来释放内存,关闭连接等
function __destruct()
{
echo "该对象马上销毁";
}
}
//继承
class Student extends Ren
{
public $class;
//父类方法的扩展和重写
function Say()
{ parent::Say();//调用父类中的方法
echo "子类方法";
}
}