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. IBatis学习

    (1)建立 SqlMap.config文件 <?xml version="1.0" encoding="utf-8" ?> <sqlMapCo ...

  2. 浏览器本地存储(browser-storage,HTML5-localStorage > IE-UserData > Cookie)

    https://www.baidufe.com/component/browser-storage/index.html BrowserStorage是浏览器本地存储的一个解决方案,存储优先级依次为: ...

  3. Google

    1. Google Play: Google Play是谷歌官方的的应用市场, Google Play 服务通常会在 Android 装置上自动更新. http://baike.baidu.com/l ...

  4. CentOS安装oracle12C

    安装虚拟系统CentOS6.5,分配给至少1G的内存,其他条件适当高些,具体参考官方文档 一.安装数据库: 1.安装依赖软件包 yum install binutils -y yum install ...

  5. 使用maven编译Java项目 http://www.tuicool.com/articles/YfIfIrq

    使用maven编译Java项目 时间 2014-07-17 17:42:37  Way Lau's Blog 原文  http://www.waylau.com/build-java-project- ...

  6. 固定IP 正常访问谷歌

    如题 地址栏直接输入 http://173.194.1.150/ 正常使用 ~标记一下~

  7. Python之路【第十一篇续】前端之CSS补充

    CSS续 1.标签选择器 为类型标签设置样式例如:<div>.<a>.等标签设置一个样式,代码如下: <style> /*标签选择器,如果启用标签选择器所有指定的标 ...

  8. Yii2 数据操作Query Builder(转)

    Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...

  9. firefox 提示 setTimeout():useless setTimeout call (missing quotes around argument?) 错误

    原来代码: setTimeout(window.parent.refreshNode(id),500);// 500毫秒后,调用父窗口的refreshNode()方法 refreshNode()方法总 ...

  10. 【转】使用Eclipse构建Maven项目 (step-by-step)

    安装eclipse 及配置maven时,参考的资料!!! from:http://blog.csdn.net/qjyong/article/details/9098213 Maven这个个项目管理和构 ...