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操作xml代码
Jun 17 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
May 12 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
php无限级分类实现方法分析
Oct 19 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
wxPython中文教程入门实例
2014/06/09 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
python判断数字是否是超级素数幂
2018/09/27 Python
python 发送json数据操作实例分析
2019/10/15 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
浅谈Python __init__.py的作用
2020/10/28 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
serialVersionUID具有什么样的特征
2014/02/20 面试题
VC++笔试题
2014/10/13 面试题
优秀员工自荐信范文
2013/10/05 职场文书
2014年高考决心书
2014/03/11 职场文书
春游踏青活动方案
2014/08/14 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
机关作风建设整改方案
2014/10/27 职场文书
2014年校长工作总结
2014/12/11 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis