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 HandlerSocket的使用
May 02 PHP
在yii中新增一个用户验证的方法详解
Jun 20 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
PHP钩子实现方法解析
May 21 PHP
php模拟实现斗地主发牌
Apr 22 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
PHP基本语法
Mar 31 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
Python实现list反转实例汇总
2014/11/11 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python argv用法详解
2016/01/08 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
python关于变量名的基础知识点
2020/03/03 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
车间班组长的职责
2013/12/13 职场文书
教育局长自荐信范文
2013/12/22 职场文书