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语法(4)
Oct 09 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
Jun 05 PHP
PHP伪静态页面函数附使用方法
Jun 20 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
PHP curl_setopt()函数实例代码与参数分析
Jun 02 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
解析php中curl_multi的应用
Jul 17 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 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 ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
python自动生成证件号的方法示例
2021/01/14 Python
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
优秀大学生职业生涯规划书
2014/02/27 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
老干部工作先进事迹
2014/08/17 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL