在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
時,我們看到的是子類中定義的值,而不是父類中的值。