在Ruby中,类常量是在类定义时初始化的变量,它们属于类本身而不是类的实例。子类可以继承父类的常量,但是在子类中不能重新定义或修改父类的常量。如果需要在子类中覆盖或修改父类的常量,可以使用super
关键字调用父类的常量。
以下是一个示例:
class Parent
CONSTANT = "Parent Constant"
end
class Child < Parent
CONSTANT = "Child Constant"
end
puts Parent::CONSTANT # 输出 "Parent Constant"
puts Child::CONSTANT # 输出 "Child Constant"
# 在子类中覆盖父类的常量
class ChildWithOverride < Parent
CONSTANT = "Child With Override Constant"
end
puts ChildWithOverride::CONSTANT # 输出 "Child With Override Constant"
在这个例子中,Child
类继承了Parent
类的常量CONSTANT
,并为其分配了新的值。然而,在ChildWithOverride
类中,我们使用super
关键字覆盖了父类的常量。当我们输出ChildWithOverride::CONSTANT
时,我们看到的是子类中定义的值,而不是父类中的值。