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
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
php对象和数组相互转换的方法
May 12 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
Mar 28 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
php常用的工具开发整理
Sep 26 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
PHP程序员编程注意事项
2008/04/10 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
php常见的页面跳转方法汇总
2015/04/15 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
Linux操作面试题
2015/02/11 面试题
现金会计岗位职责
2013/12/05 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
主题党日活动总结
2014/07/08 职场文书
社区娱乐活动方案
2014/08/21 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
HTML基础详解(上)
2021/10/16 HTML / CSS
vue实现滑动解锁功能
2022/03/03 Vue.js