Warum deklarierst du nicht gleich getName als virtual-abstract? Der Umweg über getName2 ist doch gar nicht nötig.
Da hab' ich gar nicht dran gedacht. Mir war praktisch nicht bewusst, dass ich getName, das ich ja aus dem interface "implementiert" hatte, gleich wieder als abstract definieren kann.