当前位置: 首页 > news >正文

php面相对象基本概念,基本形式,传值

面向对象基本概念

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

类与对象

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

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

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

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

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

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

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

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

在面向对象的语法中

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/ybygb-geng/p/9764437.html

相关文章:

  • 【Linux】- ps 命令
  • 10-序列化
  • EM算法
  • 《弹球学成语》需求分析报告
  • IDEA控制台问题:java lang OutOfMemoryError:PermGen space
  • c语言打印空白星号矩形
  • 关于Qt中窗口的坐标
  • Django将默认的SQLite更换为MySQL
  • Django的contenttypes
  • 离散傅里叶级数DFS
  • NiftyNet开源平台的使用 -- 配置文件
  • 构造代块 的作用
  • [SCOI2010]传送带
  • 2018.10.17多校
  • [USACO16FEB]负载平衡Load Balancing_Silver(NlogNlogN解法)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • C++类的相互关联
  • EOS是什么
  • Golang-长连接-状态推送
  • Iterator 和 for...of 循环
  • java8 Stream Pipelines 浅析
  • js继承的实现方法
  • mysql 数据库四种事务隔离级别
  • node.js
  • PHP 的 SAPI 是个什么东西
  • Python利用正则抓取网页内容保存到本地
  • python学习笔记 - ThreadLocal
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vue-cli3搭建项目
  • vue总结
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 入门级的git使用指北
  • 使用parted解决大于2T的磁盘分区
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 小程序开发中的那些坑
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • #Linux(帮助手册)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (39)STM32——FLASH闪存
  • (42)STM32——LCD显示屏实验笔记
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (动态规划)5. 最长回文子串 java解决
  • (二)hibernate配置管理
  • (原創) 物件導向與老子思想 (OO)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)LINQ之路
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .Net 垃圾回收机制原理(二)
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .Net环境下的缓存技术介绍
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)