En este caso se ha creado una superclase "Producto" que contiene la definición común a todos los productos bancarios que ofrece nuestro banco: de momento, sólo hereda de Producto la clase Cuenta. Cuenta utiliza directamente la implementación de algunas de las operaciones que hay en Producto, mientras que da una definición propia a otras, como por ejemplo la operación esCancelable.

Se debe crear una clase abstracta Tarjeta que herede de Producto y de la que hereden, además, dos clases concretas: Débito y Crédito. En Tarjeta, además de la información del titular, número de tarjeta y fecha de caducidad, pondremos también un campo de tipo Cuenta que será la cuenta asociada a esta tarjeta.