面向对象基本概念

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

类与对象

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

通常,一个类所具有的共同特征包括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之间是值传递。

再来对比看看引用传递:

php面相对象基本概念,基本形式,传值的更多相关文章

  1. 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象

    本篇内容: 常用模块的补充 python面相对象 一.常用模块补充 1.configparser模块 configparser 用于处理特定格式的文件,起内部是调用open()来实现的,他的使用场景是 ...

  2. Java开发知识之Java面相对象

    Java开发知识之Java面相对象上 一丶什么是面相对象 了解什么什么是面相对象.那么首先要了解什么是面相过程. 面相过程的意思就是. 什么事情都亲力亲为. 比如上一讲的排序算法. 我们自己写的. 这 ...

  3. python之面相对象程序设计

    一 面向对象的程序设计的由来 面向对象设计的由来见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 面向对象的程序设计:路飞学院版 ...

  4. python 的面相对象编程--对应c++

    在python的面相对象编程中,我们常常在class中可以看到a(),  _b() ,  __c(), __d()__这样的函数. 由于我是看廖雪峰老师的教程,廖老师为了简单起见,没有引入太多概念,我 ...

  5. 201871010101-陈来弟《面相对象程序设计(java)》第十周学习总结

    201871010101-陈来弟<面相对象程序设计(java)>第十周学习总结 实验八异常.断言与日志 实验时间 2019-11-1 1.实验目的与要求 (1) 掌握java异常处理技术: ...

  6. 初识python:tkinter 实现 弹球小游戏(非面相对象)

    通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...

  7. js编程-面相对象

    //js面相对象编程 //定义constructor构造方法 function myFn(name,sex){ this.name = name; this.sex = sex; } //用proto ...

  8. OC中对象拷贝概念

    OC中的对象拷贝概念,这个对于面向对象语言中都会有这种的问题,只是不同的语言有不同的解决方式:C++中有拷贝构造函数,Java中需要实现Cloneable接口,在clone方法中进行操作.但是不过OC ...

  9. java类(Class)的概念;对象的概念,声明类的属性 和方法,局部变量和成员变量,面向对象编程思维,抽象的概念

    类(Class)的概念 类是对一组具有相同特征和行为的对象的抽象描述. 理解: [1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为. [2] 类是一个群体性概念.例如:网 ...

随机推荐

  1. Android精通教程-Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease ...

  2. HIVE 乱码以及 HUE SQL 语句兼容性的记录(遇到应该会一直更新)

    最近在 HUE 里面查询有中文字段相关的东西被报错警告... (1366, Incorrect string value: \\xE4\\xBA\\xAC\\xE4\\xB8\\x9C... for ...

  3. mysql创建账号、授权、数据导出、导入

    1.账号创建及授权 grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant opti ...

  4. 【洛谷】P3188 [HNOI2007]梦幻岛宝珠

    题目描述 给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值.  数据范围:N<=100;W<=2^30,并且保证每 ...

  5. Spring的xml中引入其他文件

    引入db.properties <!--加载db.properties文件--> <context:property-placeholder location="class ...

  6. java中快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

    一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...

  7. linux 命令scp

    scp命令网络传输文件 上传文件 scp 文件名 usename@10.233.23.100:Data/ 上传文件夹到服务器 scp -r 文件夹(不带/)usename@10.233.23.100: ...

  8. #C++初学记录(贪心算法#二分查找)

    D - Aggressive cows 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 < ...

  9. laravel 存储base64格式图片

    laravel 存储base64格式图片 一.总结 一句话总结: 用正则替换base64图片编码的编码头即可 存储图片的话,用laravel可以用Storage的put方法,原生php可以用file_ ...

  10. AUC,ROC我看到的最透彻的讲解

      版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u013385925/article/d ...