zoukankan      html  css  js  c++  java
  • 浅谈PHP面向对象编程(一)

    传统的面向过程


     

    将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标。

    现代的面向对象


     

    将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自己的任务,任务之间的链接通过“调用”来实现,最终也完成了整体的工作。

    万事万物都是对象。

    面向对象是设计思想的“升华”——面向过程是解决简单问题的自然的思维过程,面向对象是解决大规模的复杂问题的良好思想。

    面向对象基本概念

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

    类与对象

    抽象与具体

    张三是一个对象,李四也是一个对象。王五同样是一个对象。。。。。

    他们都隶属于“人”这个“类”(人类),同时我们也可以 说隶属于“脊椎动物类”,还可以说属于动物类,甚至生物。

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

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

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

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

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

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

    一个类的内部可以有3种代码:

    属性

    方法

    类常量

    它们统称为“类中成员”。

    下面我们简单封装一个类,并实例化对象

    复制代码
    class person{
        /*定义属性*/
        var $name="";//var是修饰符,也可以用别的修饰
        /*方法*/
        function say($name){
            echo("我叫".$name);
        }
        
    }
    $p = new person();//实例化对象
    $p->name="张三";//给对象属性赋值
    $p->say("张三");//调用对象的方法*
    复制代码

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

    复制代码
    /*定义一个人 类 有年龄 姓名属性  工作的方法*/ 
    //class man{
    //    public $name;
    //    public $sex;
    //    public $age;
    //    function summary(){
    //        echo '我是'.$this->name.',是个'.$this->sex.'生'.',今年'.$this->age.'岁.<br>';
    //        //$this指的是当前类的当前对象
    //    }
    //}
    //
    //$p1 = new man();//实例化对象
    //$p1->name="夏荷";//给对象属性赋值
    //$p1->sex="女";//给对象属性赋值
    //$p1->age="23";//给对象属性赋值
    //$p1->summary();//调用对象的方法*/
    //
    //$p2 = new man();//实例化对象
    //$p2->name="万树";//给对象属性赋值
    //$p2->sex="男";//给对象属性赋值
    //$p2->age="25";//给对象属性赋值
    //$p2->summary();//调用对象的方法*/
    复制代码

    静态属性 静态方法 

    复制代码
    //静态属性 与 静态方法
    //class union{
    //    static $v=10;
    //    var $v1=100;
    //    
    //    static function f1(){
    //        echo "这是静态方法";
    //    }
    //}
    //
    //$p =new union();
    //$p->v1;//一般属性的调用
    //
    //echo union::$v;//静态属性的调用 类名::静态属性名
    //union::f1();//静态方法的调用 类名::静态方法名
    复制代码

    注意:$this在静态方法中不能使用 ,静态方法中也不应调用非静态方法。

    构造方法

    构造方式是类中的一个“特殊”方法,其作用是在实例化一个对象的同时,给该对象的属性赋值,使之一创建完成,就具有了其本身的特有数据(属性值)。

    1,该方法名字是固定的,为:__construct();

    2,该方法必须是普通方法(不能是静态方法)

    3,通常该方法应该是public

    4,通常该方法中使用$this这个关键字来对属性进行赋值

    5,当new 类名()的时候,其实是在调用该构造方法

    6,如果一个类中定义了构造方法,则实例化该类时就会调用该方法,且实例化时的参数需要跟构造方法的参数匹配

    复制代码
    //构造方法    _construct
        //普通的我们这样
    //class lemon{
    //    var $name="";
    //    var $age=0;
    //    function info(){
    //        echo $this->name.'的年龄是'.$this->age;//如果对象太多 这样组织起来的话会很麻烦
    //    }
    //    
    //}
    //$lisi=new lemon();
    //$lisi->name='李四';
    //$lisi->age=12;
    //$lisi->info();
    
     //特殊的(运用构造方法)是这样
    //class lemon{
    //    var $name="";
    //    var $age=0;
    //    function __construct($name,$age){//构造方法 实例化对象的时候会自动调用 作用是初始化数据
            //$this->name=$name;
            //$this->age=$age;
        //}
    //    function info(){
            //echo $this->name.'的年龄是'.$this->age;
        //}
    //    
    //}
    //$hong=new lemon("王小红","25");
    //$hong->info();
    复制代码

    类的继承

    简单理解:

    某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息。

    父类有的特性子类一定会有,子类有的特性父类不一定有

    复制代码
    class shop_all{
    //    var  $lemon=10;
    //    function show(){
    //        echo $this->lemon;
    //    }
    //}
    //class shop1 extends shop_all{//该句 shoop1 继承了 shop_all的属性
    //    var $lemon ="66";//如果注释掉就会找到父类的该属性输出10
    //    function show(){//如果注释掉就会找到父类的该属性输出10
    //        echo "这是show的方法";
    //    }    
    //}
    //$fruit =new shop1();
    //echo $fruit->lemon;
    //echo $fruit->show();
    复制代码
  • 相关阅读:
    【原创】R61509/SPFD5420A驱动调试总结
    [轉貼]程序员需要具备的基本技能
    Entity SQL 说说IN关键字
    细说可空类型 nullable
    C#值类型与引用类型之我见
    解密区域集成服务器
    序列化对象,使用的三种方式:Xml,Binary,Soap
    有时间就买点书
    hdu2680 Choose the best route
    SQLServer 函数类型简要说明
  • 原文地址:https://www.cnblogs.com/Prinlily/p/9808515.html
Copyright © 2011-2022 走看看