博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php面向对象--简介
阅读量:5746 次
发布时间:2019-06-18

本文共 2816 字,大约阅读时间需要 9 分钟。

OOP特点

封装

隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

 

继承

继承是从一个基类得到一个或多个类的机制。继承来自另一个类的类被称为该类的子类。这种关系通常用父亲了孩子比喻。子类将继承父类的特性。这些特性由属性和方法组成。子类可以增加父类之外的新功能。因此子类也是父类的”扩展“

 

多态

多态指OOP能够根据使用类的上下文来重新定义或改变类的性质或行为,或者说接口的多种不同的实现方式即为多态。把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

OOP的关键

类(class)

类是对某个对象定义。它包含有关对象动作的方式信息,包括它的名称,方法、属性和事件。实际上它本身不是对象。因为它不存在于内存中。当引用类的代码运行时,类的一个新实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。

 

对象(object)

对象是一件事、一个实体、一个名词,可以获得的东西,可以想象有自己的标识的任何东西。对象是类的实例化。一些对象是活的,一些对象不是。比如这辆汽车、这个人、这间房子等,概括来说:一切皆对象。例如:类是对象的抽象定义,说白了,如果这个对象是电脑,类可以创建出许多对象,类可以生成很多电脑,再白一点,类可以当成一个电脑生产厂,可以生成出许许多多台电脑。

 

字段(field)

字段是用于描述类的某方面的性质,它与一般的PHP变量非常相似,只是有一些细微的差别。例如:电脑品种,电脑型号等特性。

 

属性(attribute)

通过方法来访问和操作字段,一方面可以保护字段,同时还允许访问公共字段一样访问数据。例如:获取电脑品牌,设置电脑品牌等操作。

 

方法(method)

方法与函数非常相似,只不过方法是用来定义类的行为。与函数一样,方法可以接受输入参数,可以向调用者返回一个值。例如:打开电脑,输入文本,运行程

创建对象

//怎样创建类格式,修饰符 class 类名 {}//我们去创建一个电脑的类,这类可以创建出对象(生产电脑)class Computer{ #类名第一个字母大写}//创建一台电脑出来,也就是对象的声明//格式,变量 = new 类名()// new Computer() 表示实例化的过程(意思是创建一个对象)// $computer1 = new Computer() 这个过程就是把实例化对象的地址赋给了$computer1这个变量// $computer1就是对象的引用$computer1 = new Computer() #解释:new Computer() 产生在堆内存中,即实例化一个Computer对象$computer1 在栈内存中,它指向的是Computer对象的堆内存的地址,即$computer1是Computer对象的引用,对象创建完成new 标识符是为了在内存中创建一个对象(实例),而Computer()就是那个类所生成的实例。$computer1 是一个变量,而且又是生成实例的引用。var_dump()可以打印出变量的相关信息

 

 

 成员字段添加

class Computer{//字段成员的声明格式:修饰符 变量名 [=xxx]public $_name = '联想';public $_mode="I7";}$computer1 = new Computer();#设置字符集echo "
";#打印成员变量echo $computer1->_name;echo $computer1->_mode;#声明字段:public $_name = '联想';a) public是修饰符,表示这是一个公共字段,可以通过外部直接访问b) $_name 是一个变量名c) '联想' 是变量的值#读取字段echo $computer1->_name;#设置字段一般情况下,不会将成员变量设置在类里面,而通过变量设置成员变量#提示:设置成员变量格式里,成员名称没有“$“符号$computer1->_name = 'IBM';

 方法的创建

//创建方法的格式class Computer{//创建方法的格式,修饰符 function 方法名(){}//如果不加修饰符,默认就是publicpublic function _run(){echo "我是运行的方法";}}echo "
";$computer1 = new Computer();$computer1->_run();

给方法添加参数

class Computer{//字段成员的声明格式:修饰符 变量名 [=xxx]    public $_name = '联想';    public $_mode="I7";    public function _run($who){        echo $who."运行的方法";    }}echo "
";$computer1 = new Computer();//执行对象方法$computer1->_run("这是传参");

 构造方法

 

所谓构造方法,也是方法,只不过是特殊的方法。而方法名必须和类名保持一致,并且不需要像普通方法一样,必须通过调用才能执行,只需要实例化即完成调用过程。一般来说,构造方法总是做初始化的工作。

 

class Computer{// 构造方法public function Comoputer(){echo "我是构造方法";}}new Computer(); #这样即完成了调用#在php5,我们可以通过 __construct 的内置方法识别构造方法,而不再需要和类名相同了。class Computer{//构造方法function __construct(){echo "我是构造方法";}}new Computer();

 

析构方法

相对应构造方法,还有一种内置的方法是析构方法,它的用途在整个类使用完毕后执行。一般可用于清理内存中对象(脚本执行完毕后会自动清理)。而如果脚本执行完毕后没有自动清理,比如数据库数据等,就有必要使用析构方法
class Computer{//构造方法public function __construct(){echo "我是构造方法";}//析构方法public function __destruct(){echo "我是析构方法";}}new Computer();

 

转载于:https://www.cnblogs.com/anyux/p/8214552.html

你可能感兴趣的文章
setprecision后是要四舍五入吗?
查看>>
shiro初步 shiro授权
查看>>
上云就是这么简单——阿里云10分钟快速入门
查看>>
MFC多线程的创建,包括工作线程和用户界面线程
查看>>
我的友情链接
查看>>
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
cvs文件提交冲突解决方案
查看>>
PostgreSQL数据库集群初始化
查看>>
++重载
查看>>
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
nodejs 完成mqtt服务端
查看>>
在ASP.NET MVC 中获取当前URL、controller、action
查看>>
Spring IoC容器初的初始化过程
查看>>
sql server 触发器
查看>>
[工具]前端自动化工具grunt+bower+yoman
查看>>
自动化测试之WatiN(2)
查看>>
关于完成生鲜电商项目后的一点总结
查看>>
noip2012 普及组
查看>>
第二阶段 铁大Facebook——十天冲刺(10)
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>