LoginSignup
0
0

More than 1 year has passed since last update.

gem使ってるとよく見かけるsuperってなんなん?

Posted at

親クラスを継承した子クラスで、同名のメソッドを呼び出すときに使う

class Human
	def sleep
		puts "寝た"
	end
end

class Programmer < Human
	def sleep
		super
		puts "しかし何故かぐっすり眠れない"
	end
end

programmer = Programmer.new
programmer.sleep

#実行結果
#寝た
#しかし何故かぐっすり眠れない

親クラスで定義しているメソッドと同名のメソッドを子クラスで再定義することをオーバーライドという。

使用例としては、deviseで、コントローラの処理を変更する場合に使ったりする

ちなみに、オーバーライドしたメソッドに対する引数は、自動的にsuperに対する引数にもなる
両方でデフォルト値を設定した場合、子クラスで設定したデフォルト値を参照する。しかし、super()と、からの()をつけてやると、子クラスのデフォルト値を無視し、親クラスのデフォルト値を参照する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0