2016/3/21 面向对象: ①定义类 ②实例化对象 ③$this关键字 ④构造函数 ⑤析构函数 ⑥封装 ⑦继承
一:定义类 二:实例化对象
1 //定义类 2 class Ren 3 { 4 var $name; 5 var $sex; 6 var $age; 7 8 function Say() 9 { 10 echo "{$this->name}在说话"; 11 } 12 } 13 //实例化对象 14 $Ren = new Ren(); 15 //调用对象的成员: 16 $Ren->name = "张三"; 17 $Ren->Say();
显示结果:
三:$this关键字
$this->name; this代表该对象,如果要在成员方法中调用成员变量,一定要使用$this找出该成员变量
四:构造函数:
①html5以前,构造函数名必须与类型相同
②执行时间特殊,最早执行,作用成员变量初始化
无参:
1 function __construct() 2 { 3 echo "空参构造函数"; 4 }
有参:
1 function __construct($n,$s,$a) 2 { 3 $this->name = $n; 4 $this->sex = $s; 5 $this->age = $a; 6 }
五:析构函数:
1 function __destruct() 2 { 3 echo "析构函数作用断开连接销毁释放空间"; 4 }
六:封装:private set get
成员变量 定义访问修饰符 直接把var去掉 换public private protect
将类里面的成员变量加一个private修饰符变成私有的,目的是为了保护类里面的成员不被外界随意访问,从而确保类的安全性。将变量设置为私有,如何去访问:
①自己写函数get函数set函数,然后来对变量赋值和取值
②用系统自带的__get()函数和__set()函数来实现类里面的变量赋值取值
1 function __set($name,$value) 2 { 3 $this->$name = $value; 4 } 5 function __get($name) 6 { 7 return $this->$name; 8 }
七:继承
继承一般是单继承:一个儿子只能有一个父亲
①子类可以继承父类的所有成员
②子类可以对父类的成员方法进行重写:(函数名一样)
要在子类方法中调用父类的方法,用parent::Say();
1 function Say() 2 { 3 parent::Say(); 4 5 echo "hello"; 6 }
final关键字可以定义类为最终类,不可被继承。
静态:关键字:static
如果成员声明了为静态的,那么该成员是属于该类的,不是属于对象的
1 //如何调用静态的成员: 2 AA::$height = 10; 3 4 //用类名加双冒号调用类的静态成员 5 AA::Hao();
1 //面向对象 2 class Ren 3 { private $sex; 4 private $name; 5 //方法 访问成员变量的方法 6 private $age;//封装用private 7 //封装:访问成员变量的方法 8 public function SetAge($age) 9 { 10 if($age>18 && $age<80) 11 { 12 $this->age=$age; 13 } 14 } 15 //成员变量 定义访问修饰符 直接把var去掉 换public 16 //封装:简便方法赋值 17 public function __set($name,$value) 18 { if ($name=="age") 19 { 20 if ($value>18 && $value<80) 21 { 22 $this->$name=$value; 23 } 24 } 25 else{ 26 $this->$name=$value; 27 } 28 } 29 //封装:简便方法获取值 30 public function __get($name) 31 { 32 return $this->$name; 33 } 34 35 36 public function Say() //成员方法 37 { 38 echo $this->name."这个人在讲话"; 39 } 40 41 //1,构造函数,写法特殊,必须与类名相同 2,执行时间特殊 最早执行 作用成员变量初始化 42 function __construct($name,$sex) 43 { 44 $this->name=$name; 45 $this->sex=$sex; 46 } 47 //2,析构函数:对象销毁时自动用 用来释放内存,关闭连接等 48 function __destruct() 49 { 50 echo "该对象马上销毁"; 51 } 52 } 53 //继承 54 class Student extends Ren 55 { 56 public $class; 57 //父类方法的扩展和重写 58 function Say() 59 { parent::Say();//调用父类中的方法 60 echo "子类方法"; 61 } 62 }