1) Las clases abstractas definen características comunes de clases derivadas pero no pueden crear objetos directamente. 2) Las clases abstractas pueden incluir métodos abstractos sin implementación que deben implementarse en clases derivadas. 3) Las interfaces definen métodos y constantes que las clases que las implementan deben incluir.