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实现网站插件机制的方法
Nov 10 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
Web程序工作原理详解
Dec 25 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
一个实用的php验证码类
Jul 06 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 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
德生9700DX电路分析
2021/03/02 无线电
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
php发送邮件的问题详解
2015/06/22 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
使用Python构建Hopfield网络的教程
2015/04/14 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
PHP开发的一般流程
2013/08/13 面试题
中国梦的演讲稿
2014/01/08 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
工会工作个人总结
2015/03/03 职场文书
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS
nginx之queue的具体使用
2022/06/28 Servers