I am reading "Scala for the Impatient" and in 8.8 they say:

> 
> [..] you can use the abstract keyword to denote a class that cannot be
>  instantiated [..]
> 
> 
> 

```
abstract class Person { val id: Int ; var name: String }

```

And several lines later:

> 
> You can always customize an abstract field by using an anonymous type:
> 
> 
> 

```
val fred = new Person {

  val id = 1729

  var name = "Fred"

}

```

So, they artificially instantiated Person class with the anonymous type. In which situations in the real world one would want to do it?