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 session 预定义数组
Mar 16 PHP
php 日期时间处理函数小结
Dec 18 PHP
php中jQuery插件autocomplate的简单使用笔记
Jun 14 PHP
php中AES加密解密的例子小结
Feb 18 PHP
php实现天干地支计算器示例
Mar 14 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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 操作文件的一些FAQ总结
2009/02/12 PHP
php 无限分类的树类代码
2009/12/03 PHP
php array_walk() 数组函数
2011/07/12 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
python自动12306抢票软件实现代码
2018/02/24 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
就业协议书的作用
2014/04/11 职场文书
电影建国大业观后感
2015/06/01 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript