В чем разница между различными переопределенными методами в Scala?

Scala позволяет переопределить метод двумя законными способами:

Данный супер класс:

class A {
  def a = "A"
}

Мы можем переопределить метод "а" от:

class B extends A {
  override def a = "B"
}

а также

class B extends A {
  override def a() = "B"
}

оба, кажется, переопределяют метод "а" правильно. Какое дизайнерское решение стоит за этим? Зачем допускатьа ()» в Б переопределить "а" в?