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 ,但是不能是对象。