对oop的理解不是很深,有下面两个问题,麻烦详细讲解下,给出些简单的代码例子1、什么时候该用静态属性和静态方法,好处是什么?
    我知道一个好处就是不用实例化对象,就可以调用属性或方法 myclass::static_fun();2、接口的一些用法
    类似多继承,但是没有用过。发一些典型的代码看看

解决方案 »

  1.   

    static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。static关键字可以用来修饰变量、方法。不经过实例化,就可以直接访问类中static的属性和static的方法。
    static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。
    static的属性,在内存中只有一份,为所有的实例共用。
    使用self:: 关键字访问当前类的静态成员。
    一个类的所有实例,共用类中的静态属性。也就是说,在内存中即使有多个实例,静态的属性也只有一份。
      

  2.   

    接口有点类似于抽象类.
    具体代码可参考下这个文章,我就不贴了
    http://developer.51cto.com/art/200911/164568.htm
      

  3.   


    这样用的还是MYSQL的数据库连接池,PHP中的STATIC不同于C#中的STATIC,它并没有程序全局的功能
      

  4.   


    恩 。。达不到java他们这样的效果,但是可以把资源静态操作
      

  5.   

    关于什么时候使用静态方法的一些总结http://blog.csdn.net/BossDarcy/archive/2010/11/21/6025288.aspx
    简单的php接口类对象的代码<?php
    //定义接口
    interface demo{
    //const NAME='BossDarcy';//设置字符串常量
    function f1();
    function f2();//方法全部要为抽象的方法
    }// the end of interface
    class realone  implements demo{
    //应用接口,方法必须具体化重写
    function f1(){
    echo "I love Google!","<br>";
    }
    function f2(){
    echo 'My sina miniblog <a href="http://t.sina.com.cn/androidyue" target="_blank">Android月</a>';
    }
    }
    //实例化类,然后调用方法
    $r=new realone();
    $r->f1();
    $r->f2();
    ?>
      

  6.   

    #14楼正解!
    其实类的成员和方法完全可以全部使用静态,特别是单例模式,单例模式下可以认为对象==类,已经没所谓实例化不实例化了,类就是对象,对象就是类本身。所以可以全部用静态。
    在不能使用单例模式的场合则不要用静态成员,随之与非静态成员相关的方法也不能使用静态方法。
    比如class Point{},这个最好不要用静态成员,因为一个运行时内可能要创建多个Point对象,然后计算它们之间的距离之类。
    总之要用多态就不要静态成员;要用单例就最好用静态成员,降低开销,提高速度,不过对“多态”这个概念没有深究,是不是与“单例”相对也不得而知,在这里主要代表“单例”的反面。
    至于单例为什么还要用类?答:仅仅为了封装。否则跟一般的面向过程没有区别。