zoukankan      html  css  js  c++  java
  • 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之间是值传递。

    再来对比看看引用传递:

  • 相关阅读:
    做题总结
    关于SQLSERVER中用SQL语句查询的一些个人理解
    关于SQLSERVER联合查询一点看法
    C#中怎样实现序列化和反序列化
    java内部类的使用
    C#抽象类
    匿名类
    Foreach能够循环的本质
    C#索引器
    深入了解接口的使用
  • 原文地址:https://www.cnblogs.com/ybygb-geng/p/9764437.html
Copyright © 2011-2022 走看看