Одна из замечательных особенностей groovy (среди многих) состоит в том, что вы можете использовать карту имен методов с замыканиями в качестве значений для макета класса. Это включает в себя абстрактные классы.
abstract class Foo {
def foo() {
return bar() + 1
}
abstract int bar()
}
def fooInst = [bar: {-> return 1 }] as Foo
assert 2 == fooInst.foo()