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 开源AJAX框架14种
Aug 24 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
PHP生成Gif图片验证码
Oct 27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
PHP实现的折半查询算法示例
Oct 09 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
php项目中类的自动加载实例讲解
Sep 12 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注入实例
2006/10/09 PHP
基于mysql的论坛(5)
2006/10/09 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
简单的自定义php模板引擎
2016/08/26 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
python获取本机外网ip的方法
2015/04/15 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
学生信息管理系统python版
2018/10/17 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
python实现飞机大战小游戏
2019/11/08 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
详解python UDP 编程
2020/08/24 Python
房屋买卖委托公证书
2014/04/08 职场文书
社会实践活动总结报告
2014/04/29 职场文书
银行奉献演讲稿
2014/09/16 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
对学校的意见和建议
2015/06/04 职场文书