Ruby. サブクラスでの定数の再定義
class Foo
AAA = "aaa"
@@foo = "aaa"
@foo = "aaa"
def aaa
"aaa"
end
def c
AAA
end
def cv
@@foo
end
def iv
self.class.instance_variable_get(:@foo)
end
def cg
self.class.const_get(:AAA)
end
def m
aaa
end
end
class Bar < Foo
AAA = "bbb"
@@foo = "bbb"
@foo = "bbb"
def aaa
"bbb"
end
end
puts
p Foo.new.c #=> "aaa"
p Bar.new.c #=> "aaa"
puts
p Foo.new.cv #=> "bbb"
p Bar.new.cv #=> "bbb"
puts
p Foo.new.iv #=> "aaa"
p Bar.new.iv #=> "bbb"
puts
p Foo.new.cg #=> "aaa"
p Bar.new.cg #=> "bbb"
puts
p Foo.new.m #=> "aaa"
p Bar.new.m #=> "bbb"なんか勘違いしてた……クラス変数はサブクラスでうわがきしてもスーパークラスに影響はないとおもってた。