Klasse = wie üblich, Interface = abstrakte Klasse, Struct (Record) = finale Klasse.
struct Bruch { private int zähler; private int nenner; public Bruch (int z, int n) { this.zähler = z; this.nenner = n; } }
Bei ordentlichem Entwurf (keine Implementierungsvererbung) reichen Interface und Struct.