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&amp;MYSQL留言板源码
Jul 19 PHP
php Ajax乱码
Apr 09 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
php将时间差转换为字符串提示
Sep 07 PHP
phpmyadmin3 安装配置图解教程
Mar 29 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
详解php中反射的应用
Mar 15 PHP
PHP MVC框架skymvc支持多文件上传
May 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
延长phpmyadmin登录时间的方法
2011/02/06 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
javascript比较文档位置
2008/04/08 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
python读取和保存视频文件
2018/04/16 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Python包和模块的分发详细介绍
2020/06/19 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
师范应届生语文教师求职信
2013/10/29 职场文书
学术会议邀请函范文
2014/01/22 职场文书
学习雷锋标语
2014/06/25 职场文书
市场营销工作计划书
2014/09/15 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
致青春观后感
2015/06/09 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python