Una clase abstracta es aquella que está “incompleta”. Esto significa que no se puede crear una instancia de ella, si no se hereda. La misma puede o no tener funciones que sean o no abstractas, pero si tiene al menos una, toda la clase debe serlo. Cada función abstracta no puede tener cuerpo (o sea que no puede tener llaves, sino directamente un punto y coma). Una clase abstracta no debe ser sellada al mismo tiempo.
Ver Documentación y Ejemplos en C#