跟随我在oracle学习php(42)

面向对象思想介绍

OOP:Object Oriented Program面向对象编程。

传统的面向过程

将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标。

现代的面向对象

将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自己的任务,任务之间的链接通过“调用”来实现,最终也完成了整体的工作。

 

万事万物都是对象。

 

面向对象是设计思想的“升华”——面向过程是解决简单问题的自然的思维过程,面向对象是解决大规模的复杂问题的良好思想。

 

面向对象基本概念

面向对象三大特性:封装  继承  多态

类与对象

类是一个抽象的概念

对象是一个具体的实例

 

张三是一个对象,李四也是一个对象。王五同样是一个对象。。。。。

他们都隶属于“人”这个“类”(人类),同时我们也可以说隶属于“脊椎动物类”,还可以说属于动物类,甚至生物。

 

类:是用于描述“某一些具有共同特征”的物体的概念,是某一类物体的总称。

通常,一个类所具有的共同特征包括2大方面的信息:

外观,形状,描述,数据。。。。。属性

行为,动作,功能。。。。。。。。方法。

对象:是指一个具体的“物体”,该物体隶属于某个“类别”(类)。

通常,对象离不开类,没有类,就不能有对象。

 

 

可见,类无非就是将一个变量和一些函数以及一些常量用一个“名字”包起来了,此名字就是“类名”。

另一方面,我们就说,这些属性,函数,和常量就“隶属于”该类——只能由该类(及其创建出来的对象)来使用。

 

原来(在面向过程)的语法中,我们的代码有如下几种代码:

定义变量;

定义函数;

使用变量(输出,赋值,等)

调用函数;

流程控制(ifswitchforwhile等)

 

在面向对象的语法中,则情况就发生变化了:

1,定义类;定义类的语法中,只有这3种代码:

1.1定义属性(变量)

1.2定义方法(函数)

1.3定义常量(类常量)

2,创建类的对象;

 

3,使用对象;

使用对象也几乎只有3个方式:

3.1使用其属性:因为属性就是“变量”,则使用其属性,也就是跟以前使用变量一样。

3.2使用其方法:因为方法就是“函数”,则使用其方法,也就是跟以前使用函数一样。

3.3使用其常量:类似使用以前的普通常量。

 

 

对象创建的基本形式

方式1

$对象名1  =  new  类名(); //对象名就是变量名;类是应该定义过了

方式2

 

方式3

$对象名3 = new  self; //self指代类本身,这行代码只能在类内部方法中使用。

 

方式4:通过对象创建对象

new 对象名;//创建该对象所属类的一个新对象

 

 

对象的传值

回顾:

php中,变量传值方式有2个:

值传递: 传递的时候,拷贝的是数据本身。默认都是值传递。

结果:传递完之后,有了2份同样的数据,但两个变量“相互独立”没有关系。

引用传递: 传递的时候,拷贝的是引用关系。需要使用“&”才能实现引用传递。

结果:传递完之后,数据仍然只有一份,但是两个变量共同指向该数据。

 

则在面向对象这个层面,基本来说,仍然如此:

默认是值传递:

可以使用引用传递:

先观察一个现象:

 

这是什么原因?

原来,对象的存储跟普通变量的存储有所区别:

普通变量:$s1 = 10;

 

 

 

 

对于对象(变量):

$obj1 = new P();

 

 

 

 

则对象变量复制的时候,值传递就变成这样:

$obj2 = $obj1; //值传递

 

 

 

 

 

 

 

 

 

 

可见,对象变量进行普通传值的时候,复制的是对象变量中所存储的“对象标识符”

 

那么,我们断开$p1跟其存储的数据(标识符)之间的关系,结果是:$p2还有效:

 

可见$p1$p2之间是值传递。

再来对比看看引用传递:

 

转载于:https://www.cnblogs.com/RighTgraM/p/10925060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值