10. それ何が嬉しいの?
結果、何が表示されますか?
module MyModule
def print(str); puts("MyModule:" + str); end
end
class MyClass1
def print(str); puts("MyClass:" + str); end
include MyModule
end
class MyClass2 < MyClass1
include MyModule
end
MyClass2.new.print("hell")
20. クラスインスタンス変数を追加したよ
class Bar
@number = 1
class << self
attr_accessor :number
end
end
bar = Bar.new
p Bar.number #=> 1
p bar.number #=> NoMethodError
ポイントは、
クラスインスタンス変数はクラスに居る
21. 継承
class Parent
def gaze
puts "( <((●))> _ <((●))> )"
end
end
class Child < Parent
end
child = Child.new
child.gaze #=> ( <((●))> _ <((●))> )
22. 継承
class Parent
def gaze
puts "( <((●))> _ <((●))> )"
end
end
class Child < Parent
end
child = Child.new
child.gaze #=> ( <((●))> _ <((●))> )
ポイントは、
メソッドの探索はまずクラス、無ければ親へ親へ
24. moduleを追加したよ
module MyModule
def print(str); puts(str); end
end
class Bar
include MyModule
end
obj = Bar.new
obj.print("hell") #=> hell
ポイントは、
includeしたクラスの直上にProxyクラスとして入る点
Barの親クラスは変わらない