PHP面向对象
来源:互联网 发布:托勒密王朝 知乎 编辑:程序博客网 时间:2024/06/08 08:40
面向对象的基本概念
类
类是属性和方法的集合,如人类(具有肤色身高属性,说话行走等方法),类是一个抽象模型
对象
对象是类的实例化,是一个具体的实体,如黄种人
面向对象的三大特点
封装性
也可以成为信息隐藏。将一个类的使用和实现分开,只保留有限的接口和方法与外部联系,用该类的人只需要知道如何使用不需要知道该类如何实现
继承性
类可以继承自另一个类(父类),并获得该类的属性和方法,并可以添加新的属性和方法,提高了代码重用性
多态性
是指一个类的多个对象,调用同一个方法可以获得不同响应
PHP与对象
类的定义
class Person{ //class关键字Person类名}
实例化
class Person{function goFootball($name,$age){echo $name."\n";if($age>16 && $age<40){echo "YES <br>";}else{echo "NO <br>";}}}$jack = new Person; //实例化$jack->goFootball("tom",10); //通过-> 调用对象方法
成员变量
可以使用public、private、protected、static、final
类常量
conts PI = 3.1459;//conts关键字、常量名大写、不加$符号;
常量的调用不需要实例化,直接通过类名::调用
Person::PI
构造方法
可以随着实例的变化而初始化不同的属性值
class Person{public $name;public $age;public function __construct($name,$age){$this->name = $name;$this->age = $age;}function goFootball(){echo $this->name."\n";if($this->age>16 && $this->age<40){echo "YES <br>";}else{echo "NO <br>";}}
function __destruct(){//调用析构方法
echo "对象被销毁,释放内存"
};
}$p1 = new Person("tom",28);$p1->goFootball();
析构方法
__destruct(),被销毁时调用,作用是释放内存,不需要手动调用
继承
子类可以继承父类所有变量和方法已经构造方法,当子类被实例化,php会先在子类查找构造方法,如果没有再去父类查找构造方法
class Sports extends Person{function goFootball(){echo $this->name."\n";if($this->age>16 && $this->age<40){echo "YES <br>";}else{echo "NO <br>";}}}$p1 = new Sports("kami",10);$p1->goFootball();
多态
覆盖:子类重写父类方法
重载:同一方法名根据参数不同而返回不同结果
访问权限
public:公开,所有类都可访问
private:私有,仅本类可访问
protected:保护,仅本类和子类可访问
static:静态,不用实例化也可访问,数据不会被销毁
final:终极类,不可被继承、重写(静态方法只能调用静态变量)
抽象类
抽象类是一种不能被实例化的类,只能作为其他类的父类使用,使用abstract关键字来修饰,抽象类至少包含一个没有方法体的抽象方法,在子类中实现
接口
类只支持单继承,接口可以多重实现,使用interface关键字声明,子类通过implements关键字来实现接口,若实现多个接口则用‘,’隔开
克隆对象
在PHP5中将实例化对象赋值给一个变量时,这时这个变量是这个对象的引用,对象随变量改变而改变;
$p1 = new Person();$p2 = $p1 //此时$p2为$p1的引用若想复制该对象则在赋值时使用clone关键字
$p1 = new Person();$p2 = clone $p1; //此时$p2是$p1的一个副本,与$p1不再关联
若想使克隆的对象拥有自己的属性和方法,则在类中定义__clone()方法
public function __clone(){$this->a =2;}
对象比较
‘==’比较两个对象的内容;'==='比较两个对象的引用
对象检测
instanceof操作符检测某对象是否属于某类
if($p1 instanceof Person) echo "yes";
魔术方法
__construct():构造方法(类中使用)
__destruct():析构方法(类中使用)
__clone():克隆方法(对实例使用)
__set:当程序试图写入一个不存在或不可见的成员变量时执行(参数:变量名、值)
__get:当程序试图调用一个不存在或不可见的成员变量时执行(参数:变量名)
__call:当程序试图调用一个不存在或不可见的方法时执行(参数:方法名、参数[arr])
__sleep、__wakeup:当序列化对象时执行,清除对象并返回一个对象变量数组
$p1 = new Sports("kami",10);$ser1 = serialize($p1);//序列化对象echo $ser1;$un1 = unserialize($ser1);//反序列化对象echo $un1->name;__toString:当使用echo或print输出对象时执行(若没有定义此方法,直接输出对象会出错)
注意:输出对象时echo或print后面只能接对象,不能有其他字符
__autoload:当程序读取一个当前文件不存在的类时执行,此方法获取当前文件不存在的类名,可以实现根据路径自动加载所需的类
function __autoload($class_name){$class_path = $class_name.'.class.php';if(file_exists($class_path)){include_once($class_path);echo "通过__autoload方法自动加载了类".$class_name."<br>";}else{echo "未找到".$class_path;}}
注意:应该养成把每一个完整的类保存为一个class.php文件的习惯阅读全文
0 0
- 【面向对象】php面向对象
- php面向对象--php面向对象ppt
- PHP面向对象精要
- PHP 面向对象编程
- PHP面向对象编程
- PHP 面向对象技术
- php 面向对象
- PHP面向对象编程
- Php面向对象01
- PHP面向对象笔记
- PHP面向对象v1:
- php 面向对象学习
- PHP-面向对象-OOP2
- PHP-面向对象-OOP3
- PHP-面向对象-OOP4
- PHP-面向对象-OOP5
- PHP-面向对象-OOP6
- PHP面向对象技术
- 详解Android动画之Frame Animation
- live555 SETUP处理详解
- 张维迎:只有持续提升中国人享有的自由,方能迎来创新
- Crazy Learning for Day 6
- Mentor.Graphics.FloEFD.16.1.v37xx.Suite.Win64 5CD
- PHP面向对象
- 第一次
- linux下elasticsearch
- ViewPager限定预加载的页面个数setOffscreenPageLimit(int limit)
- 内存页面调度、页面交换
- Android 中TabLayout实现Tab自定义和选中文字加粗
- 单机服务器支持千万级并发长连接的压力测试
- 公有云、私有云、混合云之间的区别,你知道吗?
- Android ListView 常见问题记录