php中重写和final关键字的使用

  为什么把重写和final放在一起,原因就是一条:final的意思是不可更改的,也就是说final定义的东西是不可改变的,下面具体来说一下。

来看一段简单的代码:

 1 class BaseClass {
 2    final public function test() {
 3        echo "BaseClass::test() called\n";
 4    }
 5
 6    public function moreTesting() {
 7        echo "BaseClass::moreTesting() called\n";
 8    }
 9 }
10 final class AbcClass{
11   public function abc(){
12     echo "abc";
13   }
14 }
15 /*
16 class Abcd extends AbcClass{
17   public function abcd(){
18   }
19 }
20 */
21
22 class ChildClass extends BaseClass {
23    public function moreTesting($tmp=null) {
24        echo "ChildClass::moreTesting() called\n";
25    }
26 }

代码中定义了一个类,BaseClass然后ChildClass继承了这个类并且重写了这个类中的方法moreTesting,重写方法的时候方法名一定要一样,参数可以改变。这时候对象调用的时候就是调用的重写后的方法。

代码中注释了一个地方,如果这段代码被执行就会报错,因为AbcClass是final关键字定义的类,可以正常被使用,但不能被任何类继承。

类中final关键字定义的方法也不能被重写,比如BaseClass中的test方法,只能使用,如果重写会出现错误。

时间: 2024-10-28 22:56:35

php中重写和final关键字的使用的相关文章

Java中的方法重写 与 final关键字

Java中的方法重写 与 final关键字 以下程序是否存在错误? class Base { private final void method() { System.out.println("In Base..."); } } class Sub extends Base { public void method() { System.out.println("In Sub..."); } } 答案 正确的. 使用final关键字可以声明类.成员变量和成员方法,一

java中static,super,final关键字辨析

1:static关键字 利:1)对对象的共享数据提供单独的空间存储. 2)修饰的方法可以直接被类名调用 弊:1)生命周期长. 2)访问出现限制(只能访问静态) 它可以有静态方法,静态类,静态变量 2:super关键字 1)使用super关键字调用父类的成员变量和成员方法. 格式1:super.成员变量 格式2:super.成员方法([参数1,参数2...]) 2)使用super关键字调用父类的构造方法 格式1:super([参数1,参数2...]) 总结:this代表当前对象(可以输出或地址).

【Java_基础】java中static与final关键字的区别

1.static关键字 经由static关键字修饰的成员为类成员,被所有对象所共享,通常通过类名来引用static成员.类加载的连接阶段将会为静态成员变量在jvm内存的方法区分配空间,并在类的初始化阶段赋初值. 一个类的static成员变量只有“一份”(存储在方法区),无论该类创建了多少对象.看如下的示例: public class StaticDemo { public static void main(String[] args) { People p1 = new People(18);

[java]final关键字的几种用法

在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final关键字及其用法. final关键字 在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是"这是不可变的".下面,我们来讲final的四种主要用法. 1.修饰数据 在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量.在java中,用final关键字修饰

final关键字(final是最终的)

1.final修饰特点 a.修饰类,类不能被继承 b.修饰变量,变量就变成了常量,只能被赋值一次 final int num = 10;一般会搭配两个关键字public static final double p1 = 3.14;(谁都可以去访问) c.修饰方法,方法不能被重写 2.final关键字修饰局部变量 a.修饰基本类型,是值不能被改变(报错无法为最终变量NUM分配值) b.修饰引用类型,是地址值不能被改变,对象中的属性可以改变 例: class bj08_20 { public sta

java中的 final关键字

a.  final的变量值不能改变b.  final的方法不能被重写c.  final的类不能被继承 1.final类        final类不能被继承,因此final类的成员方法没有机会被覆盖,不能被重写,默认都是final的.在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类. 2.final方法(不能被重写)        如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法. public class

Java中关于final关键字

final关键字,大学时一直没有理解,伴随到工作,郁闷......也可能大学真的没认真去学习 首先,final给人一看英语单词 不就是最终的嘛,最终的什么的呢 ? 小张现在就带大家 学习下..... Java中无外乎类.方法.属性也就是field. 先来说下被final修饰的类吧!就是不能被其他类继承呗,如果硬要继承final类呢?那就编译器编译不通过呗 再说final方法,就是不能被子类重写呗 下来说final变量,变量分为基本类型变量,和引用类型变量.如果final修饰基本类型变量,则该变量

深入理解Java中的final关键字

Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

浅谈Java中的final关键字

谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类   当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让他被继承,就可以用final