zoukankan      html  css  js  c++  java
  • php类与对象的基本概念

    php面向对象设计

        对象相比数组的优点:不仅可以存储多个数据,还可以将函数存在对象中

        对象的三大特性:封装、继承、多态

        面向对象编程(object oriented programming 即oop),其达到了编程代码的重用性、灵活性和扩展性更加简洁、容易维护。php又不是纯的面向对象编程,其也可以是面向过程编程。

        1.面向对象和面向过程的区别?

          面向过程:就是在整个项目中最小单位都是由函数组成的

         面向对象:就是在整个项目中最小单位都是由对象组成的

       2.什么是对象

          对象,可以说世间万物都是。就是一个实体,在现实生活中能够描述出来的。例如:桌子、电脑等

       3.对象中有什么?

           对象:成员 

                     成员属性==变量-->定义对象的外观和状态

                     成员方法==函数-->定义对象的功能

       4.什么是类?

            分类、类型、自己类型

         就是给一个东西分类别,就是在这个类中定义属性和方法

         例如给鸟定义属性和方法

    5、类与对象之间的一个关系

        声明类-->实例化对象(创建对象)-->用对象

        一句话就是:类是对象的声明,对象是类的实例

       类是抽象的,代表了一类的事物,现实生活中的具体事物

       类是对象的模板,对象是类的具体实例【就是生活中所能描述出来的一个具体的东西,人(一种食物的类别,即类,这里面的内容是每个人都通有的东西)-->黑人、白人、黄种人(具体的一个对象)】

      ①  类的声明

         修饰符  class 类名{

                        成员

                }

        案例:

            

    <?php
    //类的声明
    class Cat{
    public $name;
    public $age;
    public $color;
    }

    //实例化对象
    $cat1=new Cat();//也可不用小括号()
    $cat1->name="小白";//->是指向的意思
    $cat1->age=2;
    $cat1->color="白色";
    $cat2=new Cat();
    $cat2->name="小黑";
    $cat2->age=2;
    $cat2->color="黑色";

    //对象的使用

    $findName="小白";
    if($cat1->name==$findName){
    echo $cat1->name."<br/>".$cat1->age."<br/>".$cat1->color;


    }
    if($cat2->name==$findName){
    echo $cat2->name."<br/>".$cat2->age."<br/>".$cat2->color;


    }

    ?>

    ②如何定义一个类的文件名

          专门定义一个类的文件名应该这样定义:类名.class.php  

     例如:Cat.class.php

    <?php

    class Person{

    public $name;
    public $age;

    }
    $a=new Person();
    $a->name="小明";
    $a->age=20;
    $b=$a;
    var_dump($a);
    echo "<br/>";
    var_dump($b);
    echo $a->name;
    echo "<br/>".$b->name;

    ?>

    图解

        内存的引申

    代码

    $a=78;
    $b=&$a;//&引用的而是地址
    $b=$b+8;//$b在内存中找到的是$a的地址,通过地址找到值然后再加8,所以$a的地址的值就变成了86
    echo $a."||".$b;//结果为86||86

    图解

     

     函数使用对象

    class Person{

    public $name;
    public $age;

    }
    $a=new Person();
    $a->name="小明";
    $a->age=20;

    function test2($b){//对象传递的是地址

    $b->name="倪22";
    }
    function test($b){

    $b->name="倪华";
    test2($b);
    }
    test($a);

    echo $a->name;//结果为倪22

      函数中传递的基本类型是什么?

    其传递的是具体的值

    $a=1;
    $b=true;
    $c="2fff";
    function test3($a,$b,$c){//执行完之后就会释放栈,其并没有改变堆中的值,所以
    $a=3;
    $b=false;
    $c="2frrf";
    }

    echo $a."||".$b."||".$c;//在外层echo的时候打印出的还是外层变量的值

    要想改变值就要在变量前加个地址符号&

    function test3(&$a,&$b,&$c){//引用变量的地址
    $a=3;
    $b=false;
    $c="2frrf";
    }

    成员方法的理解:

          

    class Person{

    public $name;
    public $age;
    public function speak(){
    echo "你好,世界!";

    }
    }
    $a=new Person();
    $a->name="小明";
    $a->age=20;
    $a->speak();//方法的调用,后必须加()

    成员方法的细节问题:

    在实际开发中使用类

           将一个对象放在另外一个文件中去调用

    例如:

    Person.class.php//这个文件中只用来定义的

           

    <?php

    class Person{

    public $name;
    public $age;
    public function speak(){
    echo "你好,世界!";

    }
    public function jisuan($n){
    $res=0;
    for($i=1;$i<=$n;$i++){

    $res+=$i;

    }
    return $res;

    }
    public function max22($arr){//如果想在函数中改变外层传过来的数组中的元素值,就必须&$arr这样写(就是传的引用地址);否者就传的是值,在函数执行完了之后就释放栈
    $arr[0]=100;
    $maxValue=$arr[0];
    $maxIndex=0;
    for($i=0;$i<count($arr);$i++){
    if($maxValue<$arr[$i]){
    $maxValue=$arr[$i];
    $maxIndex=$i;
    }


    }
    return $maxValue;
    }
    }

    ?>

    在test.php中使用

        test.php

    <?php

    require_once 'Person.class.php';

     //使用对象

    $a=new Person();
    $a->name="小明";
    $a->age=20;
    $a->speak();
    $b=$a->jisuan(10);
    $myarr=array(12,24,93);
    $max33=$a->max22($myarr);
    print_r($myarr);
    echo "max=".$max33;

    ?>

  • 相关阅读:
    ZedGraph 总论
    ZedGraph图形控件在Web开发中的应用
    zedgraph基本教程篇第八节PieSampleDemo.cs介绍
    zedgraph基本教程篇第三节、第四节DateAxisSampleDemo.cs和TextAxisSampleDemo.cs介绍
    zedgraph 基本教程篇第二节:ModInitialSampleDemo.cs介绍
    zedgraph基本教程篇第五节BarChartSampleDemo.cs介绍
    zedgraph基本教程篇第九节MasterSampleDemo.cs介绍
    JavaScript 中创建自定义对象
    SQL Server 索引结构及其使用(一)
    Javascript 的基本对象
  • 原文地址:https://www.cnblogs.com/tangyue/p/3739287.html
Copyright © 2011-2022 走看看