什么是final修饰 使用final修饰类、方法、变量的区别?

在这里插入图片描述

简介:

变量成为常量,不允许修改

  1. 当final修饰类时,该类变为最终类(或称为不可继承的类)。不能从最终类派生子类。这样做的目的是为了防止其他类修改或扩展最终类的行为。
  2. 当final修饰方法时,该方法成为最终方法(或称为不可重写的方法)。不能在子类中对最终方法进行重写或覆盖。这通常用于确保某个方法的行为在整个继承层次结构中始终保持一致。
  3. 当final修饰变量时,该变量成为最终变量(或称为常量)。一旦给最终变量赋予初值后,其值将不能再被更改。这种常量通常使用大写字母命名,并且必须在声明时进行初始化。

作用:

提供程序设计中的安全性和稳定性,防止对类、方法和变量的不必要修改。 优化程序性能,编译器可以在编译阶段对final修饰的内容进行优化。
提供约束和规范,使代码更易读、理解和维护。

1. final修饰类:

当一个类被final修饰时,它表示该类是不可继承的,即不能有子类。这样做的目的是为了防止其他类对该类进行扩展或修改。如果你希望某个类在整个程序中保持不变并且不被继承,那么可以将其声明为final类。

final class FinalClass {
    // 类的内容
}

在上面的例子中,FinalClass是一个被final修饰的类,因此不能有其他类继承它。如果尝试创建一个继承自FinalClass的子类,编译器将会报错。

2.final修饰方法:

当一个方法被final修饰时,它表示该方法不可被子类重写(覆盖)。也就是说,该方法的实现在父类中是最终的,无法在子类中进行修改。这通常用于确保某个方法的行为在继承层次结构中始终保持一致。

class ParentClass {
    final public function finalMethod() {
        // 方法的内容
    }
}

class ChildClass extends ParentClass {
    // 无法重写finalMethod方法
}

在上面的例子中,ParentClass中的finalMethod方法被声明为final,因此无法在ChildClass中对其进行重写。

3. final修饰变量:

在PHP中,final关键字并不能直接用于修饰变量。PHP中没有像Java那样的显式方式将变量声明为常量(不可更改)。但是,可以使用常量来实现类似的效果。常量在定义后不能被修改,因此起到了类似final修饰变量的作用。但可以使用const进行定义常量

class MyClass {
    const FINAL_VARIABLE

总结

修饰对象 特点
不能被继承,不允许有子类
方法 不允许被重写(覆盖)
变量 变量成为常量,不允许修改

你可能感兴趣的:(php)