Differences between an object and a class.

You can think of the object keyword as creating a singleton object of a class that is defined implicitly.

Define of Object and Class

object Timer{
  var count = 0
  def counter(): Int = {
    count += 1
    count
  } 
}

class Timer2{
  var count = 0
  def counter(): Int = {
    count += 1
    count
  }
}

Usage

object Object_and_Class extends App{
  println("======== Object ======")
  println(Timer.counter())
  println(Timer.counter())
  println(Timer.counter())
  println(Timer.counter())

  val timer = new Timer2
  println("======== Class ======")
  println(timer.counter())
  println(timer.counter())
  println(timer.counter())
  println(timer.counter())
}

Output

======== Object ======
1
2
3
4
======== Class ======
1
2
3
4