类的关键字:final、const

final:

  基本介绍:当程序员不希望某个成员方法被子类重写时,我们可以将该方法修饰为final 方法,不希望某个类被继承,我们可以将该类修饰为final 类。

  细节:

    (1)    final不能够修饰成员属性

     (2)    final 方法不能被重写,但可以被继承

    (3)    一般来说,final 类中不会出现final 方法,因为final类都不能被继承,也就不会去重写override final类的方法了

    (4)    final 类 是可以被实例化的

const:

  基本介绍:当不希望一个成员变量被修改,希望该变量的值是固定不变的。这时可以用const 去修饰该成员属性,这样这个属性就自动成为常量 , 比如所得税率, 数学中的圆周率等

  说明:

    (1)   const 是关键字,规定好的而不能修改.

    (2)   常量名的规范是 XXX_YYY , 全部大写,然后使用下划线间隔

    (3)   类常量都是public , 但是我们不要使用public 去修饰.

  案例说明:

class Person{
    public $name;
    private $salary;
    const TAX_RATE = 0.08;
    public function __construct($name,$salary){
        $this -> name = $name;
        $this -> salary = $salary;
    }
    public function taxMoney(){
        echo '<br>你应该交' . ($this -> salary * self::TAX_RATE) . '元的税款';
    }
}
$p1 = new Person('小明',30000);
$p1 -> taxMoney();
$p2 = new Person('小强',20000);
$p2 -> taxMoney();

  细节:

    (1)        常量名一般字母全部大写 : TAX_RATE ,中间可以有下划线 TAX_RATE

    (2)        在定义常量的同时,必须赋初值, 比如 const TAX_RATE=1.1

    (3)        const关键字前不能用public/protected/private修饰。默认是public

    (4)        常量的访问:

        在类的内部访问::  类名::常量名  ||  self::常量名 ||  接口::常量名

        在类的外部访问:  类名::常量名 || 接口名::常量名  

    (5)        常量的值在定义的时候就初始化,以后就不能修改

    (6)        常量可以被子类继承

    (7)        一个常量是属于一个类的,而不是某个对象的

    (8)  常量可以是 基本数据类型(int, float , bool, string), 还是可以是 array ,但是不能是对象。

 

原文地址:https://www.cnblogs.com/rickyctbur/p/11131191.html