A D programozási nyelv nem támogatja a többszörös öröklődést. Ehhez hasonló funkcionalitást a Java-hoz hasonlóan interfészeken keresztül tesz lehetővé a nyelv.
Interfész alatt függvények listáját értjük, amit egy osztálynak implementálnia kell, ha megakarja valósítani az adott interfészt. Ha egy adott osztály implementál egy interfészt, akkor az objektumai az implementált interfészre hivatkozó referenciára konvertálhatóak.
Egy interfész nem származhat egy osztályból, csupán más interfészekből. Egy osztály nem származhat egy interfészből egynél többször.
Interfészeket nem lehet példányosítani.
Az interfészek nem implementálhatják a tagfüggvényeiket. Implementálhatnak viszont static és final kulcsszóval ellátott függvényeket.
Ha B osztály származik A-ból, és A megvalósít egy interfészt, de B szintén implementálja, akkor az interfész megvalósítása nem öröklődik az A-ból, azt újra meg kell adni.
Az interfészek tagfüggvényei rendelkezhetnek szerződéssel, még ha nem is implementálhatjuk magukat a metódusokat. A szerződéseket öröklik az interfészt implementáló osztályok.
Lehetőség van absztrakt osztályok definiálására is az abstract kulcsszóval. Ha egy osztály absztrakt, akkor nem lehet példányosítani. Az absztrakt osztályok átmenetet képeznek az interfészek és a konkrét osztályok között.
Absztrakt osztályt explicit úgy hozhatunk létre, hogy az abstract kulcsszóval definiáljuk, valamint minden olyan osztály absztrakt lesz, amelynek van egy vagy több absztrakt metódusa.