Quelle est la différence entre les différentes méthodes surchargées en Scala?

Scala permet de remplacer une méthode en deux façons:

Donné super classe:

class A {
  def a = "A"
}

Nous pouvons remplacer la méthode "a" par:

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

et

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

les deux semblent remplacer la méthode "a" correctement. Qu'est-ce que la décision de conception derrière tout cela? Pourquoi permettre "un()" en B pour remplacer "a" dans une?

a() et a sont les deux méthodes nommé a qui ne prennent pas d'arguments, autrement dit, d'arité zéro, c'est à dire qu'ils sont identiques. Pourquoi n'auraient-ils pas le permettre?

OriginalL'auteur platypus | 2012-09-01