Scala에서 object는 특별한 의미를 갖는 예약어로, 주로 싱글톤 객체(Singleton Object)를 정의할 때 사용됩니다. Python과 비교하면 object는 전역적으로 하나만 존재하는 객체를 정의하는 방법이라고 할 수 있습니다.

object의 주요 특징:

  1. 싱글톤 객체: object로 정의된 클래스는 해당 객체의 유일한 인스턴스를 갖습니다. 즉, 다른 곳에서 해당 객체를 사용할 때는 항상 동일한 인스턴스가 사용됩니다.
  2. 클래스와 다름: class와 달리 object로 정의된 것은 생성자가 없으며, 인스턴스를 따로 만들 필요 없이 바로 사용할 수 있습니다.
  3. Main 메서드로 사용: Scala에서는 프로그램의 진입점을 정의할 때 object를 많이 사용합니다. 예를 들어 main 메서드를 포함하는 object가 실행 시 진입점이 됩니다.

예시

1. 싱글톤 객체

object MySingleton {
  def greet(name: String): String = s"Hello, $name"
}

위의 MySingleton은 싱글톤 객체로, 언제든지 MySingleton.greet("Scala")처럼 접근할 수 있습니다. 새로 인스턴스를 생성할 필요가 없죠.

2. 프로그램의 진입점

object Main {
  def main(args: Array[String]): Unit = {
    println("Hello, Scala!")
  }
}

Scala에서는 main 메서드가 포함된 object가 프로그램 실행 시 시작점이 됩니다. Python의 if __name__ == "__main__": 부분과 비슷한 역할을 합니다.