关键字

常见的关键字

final关键字

final关键字是加在类和类中的方法前,但是不能使用final标识成员属性。它的作用:一 、使用final标识的类不能被继承。二、使用final标识的成员方法,在子类中不能被覆盖。

列子1:

<?php
header('content-type:text/html;charset=utf-8');

final class Myclass {

}
//被final标识的类不能被继承,否则会出错
class Myclass2 extends Myclass{

}
//结果如下
Fatal error: Class Myclass2 may not inherit from final class (Myclass) in D:\WWW\test.php on line 8

例子2:

<?php
header('content-type:text/html;charset=utf-8');
class Myclass {
    final function fun(){

    }

}
class Myclass2 extends Myclass{
//被final标识的方法不能被覆盖,否则出错
    function fun(){

    }
}
//结果如下
Fatal error: Cannot override final method Myclass::fun() in D:\WWW\test.php on line13

static关键字

使用static关键字可以将类中的成员标识为静态的,既可以用来标识成员属性,也可以用来标识成员方法。使用static标识的成员属于类的,与对象实例和其他类无关。

在外部访问静态成员

类名::静态成员属性名

类名::静态成员方法名()

在类中访问本类中的静态成员

self::静态成员属性名

self::静态成员方法名()

如果在类的外部访问类中的静态成员,可以使用对象的引用和类名访问,但是通常使用类名访问。在使用静态方法时的要注意,在静态方法中只能访问静态成员,因为非静态成员需要通过对象的引用才能访问,通常使用$this完成。而静态的方法在对象不存在的情况下也可以直接使用类名来访问,没有对象也就没有$this引用,没有$this引用就不能访问类中的非静态成员,但可以使用类名或self在非静态方法中访问静态成员。

<?php
header('content-type:text/html;charset=utf-8');
class Myclass{
    static $count;
    function __construct(){
        self::$count++;//类中调用用self访问静态属性
    }
    static function getCount(){
        return self::$count;//类中调用用self访问静态属性
    }
}
Myclass::$count=0;//外部调用使用类名访问静态属性
$myc1=new Myclass();
$myc2=new Myclass();
$myc3=new Myclass();
echo Myclass::getCount().'<br/>';/外部调用使用类名访问静态属性
echo $myc3->getCount();/外部调用也可以使用对象引用访问静态属性。不推荐
//结果如下
3
3

const关键字

在php中定义常量是通过调用define()函数来完成的,但是将类中的成员属性定义为常量,则只能使用const关键字。将类中的成员属性使用const关键字标识为常量。访问方式和static一样,也是在外部使用类名访问成员属性和成员方法,不能使用对象引用来访问。在内部使用self关键字来访问。标识为常量的成员属性时只读的,不能重新赋值,如果试图该变它的值,则会出现错误。所以在声明常量时一定要给它初值,因为没有其他方式后期赋值。用const声明的常量名称前不需要使用” $”符号,而且常量名称通常都是大写的。

<?php
header('content-type:text/html;charset=utf-8');
class Myclass{
    const CONSTANT='CONSTANT VALUES';
    function showConstant(){
        return self::CONSTANT;//在类中用self访问常量
    }
}

echo Myclass::CONSTANT.'<br/>';//在外部用类名访问常量
$myclass=new Myclass();
echo $myclass->showConstant().'<br/>';
echo $myclass->CONSTANT;//不能用对象引用访问
//结果如下
CONSTANT VALUES
CONSTANT VALUES
Notice: Undefined property: Myclass::$CONSTANT in D:\WWW\test.php on line 13
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值