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:风雨欲来 路在何方?
Oct 09 PHP
真正面向对象编程:PHP5.01发布
Oct 09 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
php header示例代码(推荐)
Sep 08 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
python 默认参数问题的陷阱
2016/02/29 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
python实现简易通讯录修改版
2018/03/13 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
python定时关机小脚本
2018/06/20 Python
python八皇后问题的解决方法
2018/09/27 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
基于python 取余问题(%)详解
2020/06/03 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
eBay德国站:eBay.de
2017/09/14 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
考试保密承诺书
2014/08/30 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
人事代理委托书
2014/09/27 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书