Todo parece correcto, solo cambiaría dos detalles.
El modificador de acceso de los atributos, por norma general, siempre los vamos a declarar como
private, no como
publicpublic class Circulo {
public static final double numeroPi = 3.1415;
public double radio;
Habrá situaciones en que resulte más óptimo declararlos como
public o como
protected(algo a medio camino entre publico y privado).
Pero por lo general los declararemos como privados
siempre, y luego si el desarrollo del programa lo exigiese, pues ya cambiaremos el nivel de acceso.
Otra cosa, si un método retorna un valor, pues seguramente no vamos a necesitar que sea el propio método quien lo muestren en pantalla.
public double areaCirculo(){
double area = 0.0;
area = numeroPi * (radio * radio);
System.out.println("El area es: " + area + " cm");
return area;
}
Y si vamos a hacer que el método lo imprima en pantalla, entonces cuando lo invoquemos en el programa principal, no conviene llamarlo dentro de un System.out.println()
System.out.println(circulo.areaCirculo());
Porque eso va a hacer que el valor del area salga en pantalla dos veces: una por el println() que ya tiene el propio método y otra porque el area retornada va a ser impresa por el println() del programa principal.
Si nuestro método ya incorpora un println(), basta con invocarlo directamente en el programa principal, no hace falta ponerlo dentro de otro println()
circulo.areaCirculo();
Pero vamos, lo normal es que si el método retorna el valor,
no tenga su propio println().
public double areaCirculo(){
double area = 0.0;
area = numeroPi * (radio * radio);
System.out.println("El area es: " + area + " cm");
return area;
}
Si no que será el programa principal quien se ocupe de imprimir en pantalla el valor retornado:
System.out.println("El area es: " + circulo.areaCirculo() + " cm");
Espero haberme explicado bien y no haber liado más las cosas.
Como digo, son detalles, por lo demás el ejercicio parece correcto.
Un saludo.