Final的作用就是不允许儿子继承夫类,也就是说不能够对父类在进行调用,否则将会出错。

目录---------------------------------------------------------------------------------------------

00X1 对父类的属性或方法进行重写(直接在子类当中写一个与夫类相同的属性或者方法)案例一

00x2 不允许子类重写属性或者方法(在属性或方法处加final)案例二

00x3 不允许子类重写父类(直接在类那里加final)案例三

==》总的来说就是在属性或方法出加final就是不允许对属性或方法进行重写。同理在类出加final加即不允许对父类进重写。

-----------------------------------------------------------------------------------------------

00x1 子承父的重写(案例一)

<?php
class Fulei
{
function test1(){
echo "This is test1";
}
function test2(){
echo "This is test2";
}
}
class Zilei extends Fulei{
function test1($name){ #对test1进行重写,这里不管参数是什么,只要方法名与父类的一致就会被重写
echo "励志成为网络安全大牛!".$name."\n";
}
}
$object=new Zilei();
$object->test1("张三");
?>

输出如下图所示

如图所示,成功的将其重写了。

00x2 不允许子类重写属性或者方法(案例二)

<?php
class human
{
final public function test(){ #注意我在此行加了final 不允许子类重写该方法。
echo "this is 1";
}
public function test2(){
echo "this is 2";
}
} class Studen extends human
{
public function hello()
{
echo "hello world";
}
public function test() #对父类进行重写!
{
echo "我要做一个大牛!";
}
}
$one=new Studen;
$one->test(); ?>

就会爆出如下错误:

( ! ) Fatal error: Cannot override final method human::test() in D:\wamp\www\1.php on line 22

00x3 不允许子类重写属性或者方法(案例三)

<?php
final class human#注意我此行加了final 不允许子类重写该类。
{
public function test(){
echo "this is 1";
}
public function test2(){
echo "this is 2";
}
}
class Studen extends human
{
public function hello()
{
echo "hello world";
}
public function test() #对父类进行重写!
{
echo "我要做一个大牛!";
}
}
$one=new Studen;
$one->test();
?>

爆出如下错误:

( ! ) Fatal error: Class Studen may not inherit from final class (human) in D:\wamp\www\1.php on line 22

THE END


跟着百度学PHP[4]OOP面对对象编程-11-Final关键字的更多相关文章

  1. 跟着百度学PHP[4]OOP面对对象编程-10-静态关键字static

    使用static关键字可以将类中的成员标识为静态的,既可以用来标识成员属性,也可以用来标识成员方法. 以Person类为例,如果在person类中有一个“$country=’china’”的成员属性, ...

  2. 跟着百度学PHP[4]OOP面对对象编程-7-OOP的一些关键子讲解

    面对对象常用的一些关键子:http://www.cnblogs.com/xishaonian/p/6146794.html排版不是很好望见谅. THE END

  3. 跟着百度学PHP[4]-OOP面对对象编程-1-什么是面对对象编程

    该阶段学习参考:http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/09/10/1823042.html 面向对象编程(Object Orie ...

  4. 跟着百度学PHP[4]OOP面对对象编程-17-多态

    多态是除封装和继承之外的另一个面象对象的三大特性之一. 多态的作用简而言之就是为程序做括展. 比如说在公司上班,每个月财务发放工资,同一个发工资的方法,在公司内不同的员工或是不同职位的员工,都是通过这 ...

  5. 跟着百度学PHP[4]OOP面对对象编程-14-克隆对象__clone()方法

    $b=clone ($a) #克隆a对象. <?php class Human { private $name; private $sex; private $age; function __c ...

  6. 跟着百度学PHP[4]OOP面对对象编程-13-魔术方法__set(),__get(),__isset(),__unset()

    __set() 在对象访问私有成员的时候自动被调用,达到了给你看,但是不能给你修改的效果!(在对象访问一个私有的成员的时候就会自动的调用该魔术方法) __get() 方法用于获取私有属性值.(在设置私 ...

  7. 跟着百度学PHP[4]OOP面对对象编程-12-对象接口技术(interface)

    PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类. 接口正是解决每个类只能继承一个父类这个问题的 接口用什么权限,继承的那个方法也要使用什么权限. 接口的声明使用:i ...

  8. 跟着百度学PHP[4]OOP面对对象编程-6-构造方法(__construct)和构析方法(__destruct)

    函数就是成员方法(方法有三:构造方法.成员方法.析构方法) 下面是两种方法. 构造方法和构析方法 00x1 构造方法 构造方法会在创建对象之后自动调用.其名称为__construct <?php ...

  9. 跟着百度学PHP[4]OOP面对对象编程-5-内部引用$this

    $this就是对象内部代表这个对象的引用 可以调用被封装的方法或者属性! <?php class Person{ private $name; "; var $sex; functio ...

  10. 跟着百度学PHP[4]OOP面对对象编程-4-对象成员的访问 ->

    使用一个减号一个尖括号->来达到访问对象成员. $object->方法 来看案例. <?php class Person{ private $name; "; var $s ...

随机推荐

  1. Interface/接口

    1. 类和结构能够实现接口 2. 接口声明包含如下四种类型:属性.方法.事件和索引:这些函数声明不能包含任何实现代码,而在每一个成员的主体后必须使用分号 3. 继承接口的类或结构必须实现接口中的所有成 ...

  2. chmod 和 chown 的用法

    一.chown 命令 用途:更改文件的所有者或组.命令由单词change owner组合而成. 使用示例: 1,更改文件的所有者: chown jim program.c 文件 program.c 的 ...

  3. easyUI datagrid学习笔记

    1.easyUI表格的列属性 formatter:function(value,rowdata,rowindex) { return '['+value+']';//格式化,给每个值加上'[]': } ...

  4. IM即时通讯

    即时通讯,由于项目需求和不可抗力因素用的融云 当然我更倾向于用环信亲加等 使用融云遇到的那些坑: 1.集成时的坑: ,编译环境要求太高    项目中有很多旧的东西  达不到其标准 直接用最新版,出错, ...

  5. Index/Common目录下文件

    1.在Common目录下创建Common.php(系统会自动加载Common.php) 代码: function say(){ echo '; } 在IndecAction.php输出 public ...

  6. ecshop 配送方式支持"货到付款"

    ecshop配送方式,支持货到付款方法. 打开表 ecs_shipping,找到字段support_cod,修改1则支持货到付款 扩展 问题描述:已经修改了ecs_shipping表里的support ...

  7. lazyload.js实现图片异步载入

    所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行. 看看你有没有这种需求:某篇文章图片很多,如果在载入文章时就载入所有图片,无疑会延缓载入速度,让用户等更久,所以,我 ...

  8. 关于MarshalByRefObject的解释

    http://www.cnblogs.com/webfpc/archive/2010/03/10/1667101.html 首先了解一下不同应用程序域中的对象的通信方式有两种: 一种是跨应用程序域边界 ...

  9. 使用idea开发Springmvc

    使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 http://my.oschina.net/gaussik/blog/385697?fromerr=A4EKE0Ix idea1 ...

  10. ES6新特性--多行文本

    由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用` ... `表示: `这是一个 多行 字符串`;