アマグラミング

プログラミング初心者が勉強したことを復習とメモがてら書いているだけです。

(52)superでオーバライドする親クラスのメソッドを呼び出す場合

親クラスのメソッドに引数がある場合も同じ用にsuperを使って

呼び出せます。

 

ちょっとやってみます。

 

class Cats

def looks(a)

print(a)

puts "可愛い"

puts "4本足"
end
end
class Kitten < Cats
def looks(a)
super(a)
puts "何にでも興味を示す"
puts "落ち着きなく動き回る"
end
end
cat = Kitten.new
cat.looks("にゃかにゃか")

 

実行すると

f:id:tiroru17:20170620050159p:plain

 

superに(a)を書いていますけど、書かない場合も持ってきます

ようはsuperだけでも引数は持ってくる。

 

じゃあ意図的に引数を持ってこない方法はというと

super()

と書く。

だけどこの場合

f:id:tiroru17:20170620051059p:plain

引数のaにデフォルト値を与えて置かないとエラーがでるっぽい。

引数の数が合ってないって判断されるのかな?

 

ちなみに実行すると

f:id:tiroru17:20170620051242p:plain

 

こんな感じかな。