开启辅助访问
帐号登录 |立即注册

PHP中常用关键字public, private, protected, static...

 
PHP中常用的关键字:public, private, protected, static, interface, implements, final

1.public、protected、private
对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
public     被定义为公有的类成员可以在任何地方被访问。
protected  被定义为受保护的类成员则可以被其自身以及其子类和父类访问。
private    被定义为私有的类成员则只能被其定义所在的类访问。
2.static
静态变量
①静态变量仅在局部作用域中存在,当程序执行离开此作用域时,静态变量的值不丢失;
②static的作用就是能够实现变量或者方法在类中不需实例化的情况下调用;
③静态变量必须在声明为静态变量时初始化,否则静态变量将失去意义。
④静态属性只能被初始化为文字或常量,不能使用表达式

由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用;
静态属性不可以由对象通过 -> 操作符来访问。

静态延迟绑定
静态延迟绑定跟静态变量以及类静态方法等没有任何联系,静态延迟绑定中的"延迟绑定"是指 static:: 不再被解析为当前方法所在的类,而会被解析成运行时所计算出来的类。

class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        static::who(); // 后期静态绑定从这里开始
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();  //输出B
注意:(详情移步手册 后期静态绑定 )
①使用 self:: 或者 __CLASS__对当前类的静态引用,取决于定义当前方法所在的类;
②在非静态环境下,所调用的类即为该对象实例所属的类。由于 $this-> 会在同一作用范围内尝试调用私有方法,而 static:: 则可能给出不同结果。另一个区别是 static:: 只能用于静态属性;
③后期静态绑定的解析会一直到取得一个完全解析了的静态调用为止。另一方面,如果静态调用使用 parent:: 或者 self:: 将转发调用信息。

3.interface、implements
interface
①接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
②接口中定义的所有方法都必须是公有,这是接口的特性。

implements
①要实现一个接口,使用 implements 操作符。
②类中必须实现接口中定义的所有方法,否则会报一个致命错误。
③类可以实现多个接口,用逗号来分隔多个接口的名称。
④实现多个接口时,多个接口的方法名不能重名
⑤接口也可以继承,通过extends操作符
⑥类要实现接口,必须使用和接口中所定义的方法完全一致的方式(包括方法名称、参数数量和类型等都必须一致)。否则会导致致命错误。

4.final
final只能够用来修饰class与function
class使用了final之后就不能够被继承,function使用了final之后不能在子类中被覆盖




回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。