Hola, hay algo a lo que no le veo mucho sentido, y es que dentro del constructor de Cuadrado se realice el cálculo del área (idem para el círculo). Los constructores se usan principalmente para inicializar objetos y por ello no parece muy adecuado meter el cálculo del área dentro de un constructor.
Por otro lado, el ejercicio pide que se calcule el área a partir de la dimensión principal. Tú lo has hecho indirectamente, pero en realidad parece que no estás usando la dimensión principal.
Por otro lado, fíjate cómo has duplicado el código del equals en las clases cuadrado y circulo. La idea de usar herencia es evitar repetición de código. Para evitar repetición de código el método equals debería estar en la clase Figura (superclase) en lugar de en las subclases
Puedes ver un ejemplo de solución donde se usa la dimensión principal (para calcular el área, para el método equals dentro de la superclase) en
https://www.aprenderaprogramar.com/foros/index.php?topic=2973.msg13450#msg13450 Saludos