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 相关文章推荐
php 清除网页病毒的方法
Dec 05 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
php基本函数汇总
Jul 09 PHP
php开发微信支付获取用户地址
Oct 04 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
php json中文编码为null的解决办法
Dec 14 PHP
一个实用的php验证码类
Jul 06 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 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
农民和部队如何穿矿
2020/03/04 星际争霸
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
php 学习资料零碎东西
2010/12/04 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
js实现随机抽奖
2020/03/19 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
机器学习的框架偏向于Python的13个原因
2017/12/07 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
学校文明单位申报材料
2014/05/06 职场文书
高中课程设置方案
2014/05/28 职场文书
人事任命书怎么写
2014/06/05 职场文书
小学运动会口号
2014/06/07 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
小学班主任研修日志
2015/11/13 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
Python编程源码报错解决方法总结经验分享
2021/10/05 Python