PHP 面向对象 final类与final方法

2015-01-24信息快讯网

如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。

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面向对象的进阶学习(抽像类、接口、final、类常量)
php中模拟POST传递数据的两种方法分享
php中获得视频时间总长度的另一种方法
Sorting Array Values in PHP(数组排序)
PHP pathinfo()获得文件的路径、名称等信息说明
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
PHP中通过语义URL防止网站被攻击的方法分享
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
判断Keep-Alive模式的HTTP请求的结束的实现代码
php自定义函数call_user_func和call_user_func_array详解
php array_walk() 数组函数
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
PHP 类商品秒杀计时实现代码
PHP 面向对象 PHP5 中的常量
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
PHP执行linux系统命令的常用函数使用说明
asp.net Repeater控件的说明及详细介绍及使用方法
Windows下安装Memcached的步骤说明
PHP最常用的ini函数分析 针对PHP.ini配置文件
php allow_url_include的应用和解释
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
在IIS7.0下面配置PHP 5.3.2运行环境的方法
php Smarty模板生成html文档的方法
php 中文字符入库或显示乱码问题的解决方法
Fatal error: Call to undefined function curl_init()解决方法
php htmlspecialchars加强版
php addslashes和mysql_real_escape_string
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
php面向对象全攻略 (十) final static const关键字的使用
©2014-2024 dbsqp.com