面向过程:性能比面向对象高,适合单片机、嵌入式开发。
面向对象:易维护、易复用,易扩展,更适合于我们所从事的项目开发。
面向过程 区别 事物比较简单,可以用线性的 ,思维去解决
面向对像 事物比较复杂,使用简单的线性, 思维无法解决
类的三大特性:封装 多态 继承
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 类 继承类 接口继承接口 接口 实现类
多态性是指允许不同类的对象对同一消息作出不同的响应。
构造方法:
__construct: 定义构造方法的关键字
作用 :构造函数可以调用类方法或其他函数
类外new 时自动调用
构造函数可以带参数
构造方法实现初始化赋值
构造方法就是成员方法 权限自己指定
构造方法不能跨函数 只能在本函数中使用费
function __construct( [参数列表] ){ //构造方法名称是以两个下划线开始的
//方法体,通常用来对成员属性进行初始化赋值
}
<?php
/**
* 学生类
*/
class Student
{
//这是学生的4个属性
private $no;
private $name;
private $sex;
private $age;
//构造方法
function __construct($no,$name,$sex,$age)
{
$this->no = $no;
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
//自我介绍
public function say(){
printf("自我介绍:我叫%s,年龄:%d",$this->name,$this->age);
}
}
//实例化对象
$stu1 = new Student(1001,'张三','男',20);
$stu1->say();
析构方法:__destruct 定义析构方法的关键字
作用:对象销毁时 自动调用
使用unset 则直接销毁
析构函数不能带参数。
作用:释放资源 释放内存
function __deconstruct(){
//方法体,通常用来完成一些在对象销毁前的清理任务
}
<?php
class Person{
var $name;
var $sex;
var $age;
function __construct($name, $sex, $age){
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
function __destruct(){
echo "再见" . $this->name . "<br />";
}
}
$person1 = new Person("张三三", "男", 23);
$person1 = null; //第一个对象将失去引用
$person2 = new Person("李四四", "女", 17);
$person3 = new Person("王五五", "男", 43);
?>
注意:这里还涉及到一个栈内存的应用 栈内存是先进后出 但如果设置成null 或者unset这条规则将会取消
所以默认不加null 就是再见王五无 再见李四四 再见张三三 但是如果有null 比如例子中就变成 再见张三三 再见王五五 再见李四四
定义类:class 是定义类的关键字,class后边 “ ”为类名,首字母最好大写。注意 class 类名 后 无小括号
一个类主要包括属性和方法。
public表示访问修饰符,意思是公开的,没有隐藏。在类的外部是可以访问这些公开的属性的方法
也有protected 和private
protected是受保护的 对外部有隐藏 本部和子部 无隐藏
private 是私有的 对外部 和子部 都有隐藏 对本部 无隐藏
function是定义方法的关键字