別のクラスから継承するクラスがあります。子のコンストラクターを呼び出すときは、親を呼び出し、メソッドを呼び出します。私にとってはそれは完全にうまくいくはずですが、例外があります。ルビーコードは次のようになります。
class MyTestClass
def initialize
@foo = "hello world"
puts "init parent"
writeFoo
end
def writeFoo
puts @foo + " from base"
end
end
class MySubClass < MyTestClass
def initialize
puts "init sub"
super
end
def writeFoo
puts @foo + " from sub"
super.writeFoo
end
end
@foo = MySubClass.new
そのコードを実行すると、以下のような未定義のメソッド例外が発生しますが、正しい出力が出力されます。誰かが理由を説明できますか?
/Users/tj/dev/coursera/sml/hw6/test.rb:21:in `writeFoo': undefined method `writeFoo' for nil:NilClass (NoMethodError)
from /Users/tj/dev/coursera/sml/hw6/test.rb:5:in `initialize'
from /Users/tj/dev/coursera/sml/hw6/test.rb:16:in `initialize'
from /Users/tj/dev/coursera/sml/hw6/test.rb:25:in `new'
from /Users/tj/dev/coursera/sml/hw6/test.rb:25:in `<main>'
init sub
init parent
hello world from sub
hello world from base
[Finished in 0.1s with exit code 1]