PHP 面向对象 final类与final方法


Posted in PHP onMay 05, 2010

final---用于类、方法前。
final类---不可被继承。
final方法---不可被覆盖。
final类不能被继承。
如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。

<? 
//声明一个final类Math 
final class Math{ 
public static $pi = 3.14; public function __toString(){ 
return "这是Math类。"; 
} 
} 
$math = new Math(); 
echo $math; 
//声明类SuperMath 继承自 Math类 
class SuperMath extends Math { 
} 
//执行会出错,final类不能被继承。 
?>

程序运行结果
Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 14

final方法不能被重写
如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符。

如果这个方法被子类重写,将会出现错误。

<? 
//声明一个final类Math 
class Math{ 
public static $pi = 3.14; 
public function __toString(){ 
return "这是Math类。"; 
} 
public final function max($a,$b){ 
return $a > $b ? $a : $b ; 
} 
} 
//声明类SuperMath 继承自 Math类 
class SuperMath extends Math { 
public final function max($a,$b){} 
} 
//执行会出错,final方法不能被重写。 ?>

程序运行结果

Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 16
PHP 相关文章推荐
?繁体转换的class
Oct 09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
IIS环境下快速安装、配置和调试PHP5.2.0
Dec 17 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
phpphp图片采集后按原路径保存图片示例
Feb 18 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
php并发加锁示例
Oct 17 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
php操作redis命令及代码实例大全
Nov 19 PHP
PHP 面向对象 PHP5 中的常量
May 05 #PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 #PHP
一些被忽视的PHP函数(简单整理)
Apr 30 #PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 #PHP
mayfish 数据入库验证代码
Apr 30 #PHP
在PHP中操作Excel实例代码
Apr 29 #PHP
PHP 图片上传实现代码 带详细注释
Apr 29 #PHP
You might like
Zend的Registry机制的使用说明
2013/05/02 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
python发送邮件功能实现代码
2016/07/15 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
Python实现分数序列求和
2020/02/25 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
python属于解释语言吗
2020/06/11 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
英文版餐饮业求职信
2013/10/18 职场文书
资产评估专业学生的自我鉴定
2013/11/14 职场文书
组织关系转移介绍信
2014/01/16 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
导游个人求职信
2014/04/25 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
刘公岛导游词
2015/02/05 职场文书