面向对象思想介绍

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

传统的面向过程

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

现代的面向对象

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

万事万物都是对象。

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

面向对象基本概念

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

类与对象

类是一个抽象的概念

对象是一个具体的实例

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

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

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

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

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

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

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

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

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

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

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

定义变量;

定义函数;

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

调用函数;

流程控制(if,switch,for,while等)

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

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

跟随我在oracle学习php(42)相关推荐

  1. 跟随我在oracle学习php(14)

    CSS3的@keyframes用法详解: 此属性与animation属性是密切相关的,关于animation属性可以参阅CSS3的animation属性用法详解一章节. 一.基本知识: keyfram ...

  2. 跟随我在oracle学习php(40)

    效果图如下图所示 1.绘制一个图表时,需要有一个给定宽高的容器:基本配置可以阅读echarts的文档:里面有很多示例demo~~ html 结构: <div id="box" ...

  3. 跟随我在oracle学习php(21)

    变量间的传值方式 总体说明: 1,这里讨论的传值方式是指:一个变量对另一个变量 2,它不仅仅适用于赋值语句,也适用于其他有同样含义的语句,比如:函数的实参到形参 3,传值方式只有2种:值传递,引用传递 ...

  4. 跟随我在oracle学习php(51)

    HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol) 最常见B/s架构中,使用,浏览器端与服务器端数据交互协议. 协议:约定好的一套语法规则. 规定:请求数 ...

  5. 跟随我在oracle学习php(27)

    冒泡排序 目标:将下列数组进行正序(从小到大)排列出来 $arr2 = array(5,  15 ,  3,  4, 9, 11); 一般性逻辑描述: 1,对该数组从第一个元素开始,从左到右,相邻的2 ...

  6. oracle 权限问题9017,[数据库]oracle学习笔记(一)用户管理_星空网

    oracle学习笔记(一)用户管理 2014-04-13 0 1 --oracle学习第一天 2 --连接 @后面连接数据库实例,具体连接到那个数据库 3 conn scott/tiger@MYORA ...

  7. oracle学习笔记 Oracle体系结构概述

    oracle学习笔记 Oracle体系结构概述 从这节开始,开始讲oracle数据库体系结构. 首先从总体上,从概述上把oracle整体的体系结构讲一下, 然后接下来的时间我们会一块一块的将oracl ...

  8. 怎样学好Oracle子查询,Oracle学习(六):子查询

    Oracle学习(6):子查询 子查询 为何要用子查询 SQL> --查询工资比SCOTT高的员工信息 SQL> --1. 知道SCOTT的工资 SQL> select sal fr ...

  9. oracle两表链接序列跳序,Oracle学习之 序列(Sequence)

    Oracle学习之 序列(Sequence) [Oracle学习]之 序列(Sequence) oracle文档:https://docs.oracle.com/cd/B28359_01/server ...

  10. Oracle学习网站

    Oracle学习网站 http://www.oracle-base.com 能弄懂这里面的文章,那oracle的基本功就非常扎实.(英) http://asktom.oracle.com/pls/ap ...

最新文章

  1. 用Transformer定义所有AI模型!特斯拉AI总监Karpathy发推感叹AI融合趋势
  2. sai u 2016
  3. 断点续传和下载原理分析
  4. 苹果 macOS 再曝漏洞,输任意密码可进入 App Store 首选项
  5. Deploy Office Communications Server 2007R2 Group Chat Server(一)
  6. ssm oracle mysql_ssm连接oracle数据库
  7. go - reflect
  8. android图片选择器实现说明
  9. 贾俊平统计学思维导图- 第十四章 指数
  10. 华为精益看板探索之路【PPT+注解】
  11. 原创Maya mel系列插件推荐
  12. c语言实验作业感想,c语言程序报告实验总结(共10篇).docx
  13. TTime::FormatL详解
  14. 手把手教你做一个APP应用(含源码)
  15. Android 打开系统文件管理器选择文件
  16. 5.10 数据的升序和降序排序 [原创Excel教程]
  17. MySQL数据库——常用数据库大汇总(附带优缺点)
  18. 澳洲留学:说说在澳洲打工的那些苦与痛
  19. 微软自带输入法英文输入字母间间距忽然就变大了
  20. 烽火2640路由器命令行手册-11-IP语音配置命令

热门文章

  1. Android开发中如何调用摄像头的功能
  2. DLUTOJ 1033 Matrix
  3. [转载]sed实现直接修改文件内容
  4. Process Kill Technology Process Protection Against In Linux
  5. liunx grep sed
  6. android开发利用传感器实现微信的摇一摇功能(zz)
  7. VB-ocx应用于Web
  8. 车间调度建模系列2|复杂车间调度问题描述
  9. 【使用工具推荐】使用什么录像软件录制屏幕
  10. 【Redis学习笔记】Redis初识