Yo creo que el fallo esta mas bien cuando escribe:
Circulo c4 = c3.crearCirculo(new Punto (3,1));
Ahi lo que esta haciendo es Crear un nuevo circulo en la variable c3 y luego iguala c4 a esa nueva c3.
Circulo c4 = c3.crearCirculo(new Punto (3,1));
Ahi lo que esta haciendo es Crear un nuevo circulo en la variable c3 y luego iguala c4 a esa nueva c3.