Ruby繼承機(jī)制怎樣處理類常量

小樊
81
2024-11-06 07:33:40

在Ruby中,類常量是在類定義時(shí)初始化的變量,它們屬于類本身而不是類的實(shí)例。子類可以繼承父類的常量,但是在子類中不能重新定義或修改父類的常量。如果需要在子類中覆蓋或修改父類的常量,可以使用super關(guān)鍵字調(diào)用父類的常量。

以下是一個(gè)示例:

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"

在這個(gè)例子中,Child類繼承了Parent類的常量CONSTANT,并為其分配了新的值。然而,在ChildWithOverride類中,我們使用super關(guān)鍵字覆蓋了父類的常量。當(dāng)我們輸出ChildWithOverride::CONSTANT時(shí),我們看到的是子類中定義的值,而不是父類中的值。

0