В дополнение к ответу @ coubeatczech вы также можете создавать экземпляры абстрактных классов (и признаков), если добавляете уточнение,
scala> :paste
// Entering paste mode (ctrl-D to finish)
abstract class Foo(val s: String) {
def this(i: Int) = this("" + (i+2))
}
// Exiting paste mode, now interpreting.
defined class Foo
scala> val f = new Foo(23) {}
f: Foo = $anon$1@13d874e
scala> f.s
res3: String = 25
Хотя я показал пустое уточнение выше ("{}"), вы, как правило, предоставляете некоторые дополнительные определения, часто предоставляя реализации для абстрактных членов,
scala> abstract class Bar { def bar : Int }
defined trait Bar
scala> val b : Bar = new Bar { def bar = 23 }
b: Bar = $anon$1@1e17c6d
scala> b.bar
res1: Int = 23