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生成静态页
Nov 25 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
php中spl_autoload详解
Oct 17 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
php计算年龄精准到年月日
Nov 17 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 PHP
Thinkphp 中 distinct 的用法解析
Dec 14 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编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
js处理包含中文的字符串实例
2017/10/11 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
实习生自我鉴定
2013/12/12 职场文书
劳资专员岗位职责
2013/12/27 职场文书
中年人生感言
2014/02/04 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
特教教师先进事迹
2014/05/21 职场文书
排查整治工作方案
2014/06/09 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书