旧gaaamiiのブログ

間違ったことを書いている時があります。コメントやTwitter、ブコメなどでご指摘ください

Rubyでクラスの継承(inheritance)

基本からちまちまとやっていこう。
Codecademyのレッスン中ではRubyのクラス継承がこんなコードで説明されている。

class ApplicationError
  def display_error
    puts "Error! Error!"
  end
end

class SuperBadError < ApplicationError
end

err = SuperBadError.new
err.display_error

勉強もせずにRubyのコードに触れたとき、「まずこの不等号は何なんだ」と感じてたんだけど、このサンプルだととてもわかりやすい。

class SuperBadError < ApplicationError


SuperBadErrorというクラスはApplicationErrorというクラスを継承してますよ、という意味。で、継承していればdisplay_errorというメソッドはSuperBadErrorの定義に書き加えないでいい。

昨日、わけわかんなかったこれは

# なにこれclassの中で何も定義してないじゃん
# なんだこの不等号!
class Comment < ActiveRecord::Base
end

ActiveRecord::Baseを継承したCommentというクラスを定義する」という意味だったことがわかる。

Rubyはググればググるだけ「◯◯というものをつくったのでソースコード置いときます」みたいな記事がヒットするので、早くまともに読めるようになりたい。