zoukankan      html  css  js  c++  java
  • 2018-3-5 面向对象

    今天学习了有关“面向对象”的内容:

    传统的面向对象:把将要完成的工作,一个步骤一个步骤的实现,最终完成目标。

    现代的面向对象:把要做的事情提前存起来,等到需要用的时候调用,相当于设计方法和方法的调用。

    面向对象主要是设计思想上的极大提升。面向过程是解决简单问题的自然的思维过程,面向对象是解决大规模的复杂问题的良好思想。

    面向对象的基本概念:

    类:表示一个群体。有“共同特征”,某一类事物的总称。

    对象:表示群体中的个体,万事万物皆为对象。

    1、定义类:

    定义类的语法中,包括定义属性、定义方法、定义常量三种。

    2、创建类的对象:

    3、使用对象:

    //定义类
    class
    c1{ var $name="匿名"; var $sex="未知"; var $age=18; function f1(){ echo "函数f1被调用!"; } const pi=3.14; }
    //创建类的对象
    $person1=new c1(); $person2=new c1(); $person1->name="张三"; $person1->sex="男"; $str1=$person1->name; echo "{$str1}的性别为:".$person1->sex."<br />"; $person1->f1();

    创建对象的基本形式:

    ①$对象名1=new 类名();

    ②可变类名:

    $CName="C1";
    $person3=new $CName();   //可变类(名)

    ③$对象名3 = new  self;     //self指代类本身,这行代码只能在类内部方法中使用。

    ④通过对象创建对象

    $person4=new $person3;    //通过对象创建该类的新对象

    对象的传值:

    php中,传值方式有值传递和引用传递。

    值传递:拷贝数据本身。传递结束,有两份数据,但两变量“相互独立”。

    引用传递:传递结束,数据只有一份,两个变量同时指向该数据。

    面向对象:默认值传递,可以引用传递。

    class p{
        var $v1=10;
    }
    $p1=new p();
    $p2=$p1->v1;
    $p1->v1=20;
    var_dump($p1);
    var_dump($p2);

    输出结果为:$p1=20

          $p2=10

    class p{
        var $v1=10;
    }
    $p1=new p();
    $p2=$p1;  //传的是v1,不是v1的值
    $p1->v1=20;
    var_dump($p1);
    var_dump($p2);

    输出结果为:$p1=20

          $p2=20

    class p{
        var $v1=10;
    }
    $p1=new p();
    $p2=&$p1->v1;
    $p1->v1=20;
    var_dump($p1);
    var_dump($p2);

    输出结果为:$p1=20

          $p2=20

    面向对象的方法:

    例:

    //斜边
    class person{
        var $x=1;
        var $y=1;
        var $pi=1;
        function getxiebian($a,$b){
            $s1=$a*$a+$b*$b;
            $s2=pow($s1,0.5);
            return $s2;
        }
    }
    $p1=new person();
    $xie1=$p1->getxiebian(3,4);
    echo "<br />斜边1=$xie1";

    $this关键字:

    $this是一个“伪对象”,代表当前所属类的当前对象。

    //类与对象的创建   “自我介绍”
    class Person{
        public $name="匿名";
        public $age=28;
        public $PI=3.14;
        function intro(){
            echo"<b/>hi,大家好,我叫".$this->name;
            echo",今年".$this->age."岁<br/>";
        }
    }
    $p1=new Person();
    $p1->name="张三";
    $p1->age=20;
    $p1->intro();
    $p2=new Person();
    $p2->name="李四";
    $p2->age=22;
    $p2->intro();

    一个系统函数:get_class(对象) 

    作用:获得某个对象的“所属类名”——结果只是一个类名字符串。

    $class_name = get_class($p1);   //结果是:”Person” 

    静态属性

    定义:只隶属于类本身——也可以看做是所有对象的“共有数据”。

    使用:

    //静态属性
    class C1{
        static $v1=10;    //静态属性
    }
    C1::$v1=100;    //修改静态属性的值
    $s1=C1::$v1;    //取得静态属性的值
    echo "s1=$s1";
    $c1=new C1();
    $c2=new c1();
    echo "<br/>c1的中的静态属性v1=".$c1::$v1;
    $c1::$v1=1000;    //通过$c1修改了静态属性值
    echo "<br/>c2的中的静态属性v1=".$c2::$v1;

    静态方法

    方法的前面加上static关键字修饰,就变成了静态方法。

    静态方法同样隶属于类,而不是隶属于具体对象。使用方法跟静态属性类似:

    类名::静态方法名();

    静态方法是只隶属于类,而为所有对象所“共有”。

    注意1:$this在静态方法中不能使用。

    self:代表当前类。

    class S2{
        public $v1=1;
        static function getNew(){
            return new self;    //self代表"当前类"
        }                        //new self代表当前类的一个对象
    }
    echo"<hr />";
    $obj2=S2::getNew();        //t通过S2的静态方法得到该类的一个新对象
    var_dump($obj2);

    构造方法和析构方法:

    构造方法是“创建”对象的时候会自动调用。

    析构方法是“销毁”对象的时候会自动调用。

    class student{
        public $name="匿名";
        public $sex="未知";
        static $age=18;
        const food="馒头";
        function intro(){
            echo"<b/>hi,大家好,我叫".$this->name;
            echo",我是".$this->sex."生<br/>";
            echo ",我爱吃".self::food."。<br>";
        }
        function __construct($n,$s){  //构造方法
            $this->name=$n;
            $this->sex=$s;
        }
        function __destruct(){  //析构方法
            echo"<br/>被销毁了";
        }
    }
    echo"<hr/>";
    $student1=new student('刘能','男');
    $student1->intro();
    $student2=new student('赵四','男');
    $student2->intro();
    echo"<hr/>";
  • 相关阅读:
    拨号进入防盗界面
    手机开机或启动广播接收者
    time、datetime
    py 包和模块,软件开发目录规范
    递归函数
    匿名函数,内置函数
    三元表达式,列表生成式,生成器生成式
    迭代器,生成器
    XPath
    闭包,装饰器
  • 原文地址:https://www.cnblogs.com/dns6/p/8510004.html
Copyright © 2011-2022 走看看