我意识到这个问题已经在其他地方针对不同的编程语言被问过了......但这不是 PHP 域中相同答案的 100% 指标,所以我问这个问题。
有人可以告诉我,特别是在PHP中,"最终静态"和"const"之间的区别是什么?
final
子类不能修改方法或类。这可以防止类继承、方法重写和/或重新定义方法。
只有类中的类定义和/或方法可以定义为
final
.
static
将类方法或属性声明为静态值,以便无需实例化对象即可访问它们。这些在父类和子类之间共享。
类定义不能
static
与final
不同。
const
这些为类创建一个常量值。常量值将被更改,并且不能由父类或子类中的方法更改。
类常量是按类的实例分配的。
const
本身就是一个类型说明符。它不能与public
/private
/static
等一起放置。 final
,如前所述,可以与任何方法或类定义一起使用,因此;适用于所有人。 static
不能应用于类定义,但可用于类属性。
更新
自 PHP 7.1.0 起,类常量允许使用修饰符。
class Foo { public const bar = 5; private const baz = 6; }
总而言之,
final static
不能用于定义以下内容:class X { final static x = 5; }
这就是为什么你有
const
.
final
不适用于类属性,仅适用于类和方法。这意味着不能重写该方法,或者不能从中继承该类。 const
是 PHP 等价于 Java final
变量。
共同点,他们创造了完全不同的东西。 const
声明一个常量。 final static
声明了一个静态(可以在没有类实例的情况下调用)和最终(不能被子类覆盖)的方法。 static
单独可用于定义类范围的变量,该变量不是常量(但变量不能final
)。