본문 바로가기
Web development/Ruby

[Ruby] Class와 Module의 차이점

by 자몬다 2019. 6. 18.

클래스는 객체를 만들기위해 만들고, 모듈은 클래스에 메소드를 제공하기 위해 만든다.

클래스는 말그대로 객체생성을 위해 만드는거고, 모듈은 클래스에서 사용할 기능들을 제공하기 위해 만든다고 생각하면 쉽다.

 

  클래스(객체) 모듈(기능. 사용가능한 메서드를 제공하는 라이브러리 개념)
인스턴스화 가능 불가능
용도 객체생성 믹스인. namespace
super class module object
메소드 클래스메소드 & 인스턴스 메소드 모듈 메소드 & 인스턴스 메소드
상속 가능 불가능
include 불가능 다른 클래스나 모듈에서 include가능
extend 불가능 가능

 

+ include와 extend의 차이

module Foo
  def foo
    puts 'heyyyyoooo!'
  end
end

# include : 모듈메서드를 인스턴스 메서드로 상속받게 됨
class Bar
  include Foo
end

Bar.new.foo # heyyyyoooo!
Bar.foo # NoMethodError: undefined method ‘foo’ for Bar:Class

# extend : 모듈메서드를 클래스 메서드로 상속받게 됨
class Baz
  extend Foo
end

Baz.foo # heyyyyoooo!
Baz.new.foo # NoMethodError: undefined method ‘foo’ for #<Baz:0x1e708>

 

'Web development > Ruby' 카테고리의 다른 글

[Ruby] Block vs Proc vs Lambda  (0) 2019.06.18
[Ruby] and vs && (or vs ||)  (0) 2019.06.18
[Ruby] ||= (or equals)란 무엇인가?  (0) 2019.06.18
[Ruby] 함수를 동적으로 실행하기  (0) 2019.06.18
[Ruby] 인스턴스 변수  (0) 2019.06.18

댓글