Hola,
Aqui dejo mis respuestas al ejercicio del tema "CU00683B metodos static java de clase o de instancia diferencias metodo main" para su corrección:
Intenta compilar el siguiente código:
public class Test {
int atributo1;
Test (int atrib) {atributo1 = 0;}
public static void main (String[ ] Args) {
System.out.println ("Mensaje 1");
System.out.println ("Atributo 1 vale" + this.getAtrib1());
} //Cierre del main
public int getAtrib1() {return atributo1;}
} //Cierre de la clase
¿Qué mensaje de error se obtiene?
non-static variable this cannot be referenced from a static context
en la línea 6: System.out.println ("Atributo 1 vale" + this.getAtrib1());
¿Por qué se obtiene este mensaje de error?
1º. Línea 2: El Atributo "atributo1" no esta declarado como static
2º. Línea 6: No se debe usar this porque el método getAtrib1() esta fuera del método main
3º. Línea 8: El método getAtrib1() no esta declarado como static
¿Cómo podemos solucionarlo para que se ejecute lo que pretendemos?
He modificado las 3 líneas comentadas anteriormente:
/**
* Clase con método Main. (Ejemplo de mala codificación y como hacerlo bien.<br>
* CU00683B metodos static java de clase o de instancia diferencias metodo main.
* @author Lorenzo Fernández Asensio
* @version 20151118.01
*/
public class Test_CU00683B {
static int atributo1;
/**
* Constructor para Inicializar Atributos.
* @param atrib El parámetro atrib no se usa posteriormente.
* @param atributo1 El parámetro atributo1 se inicializa a 0.
*/
Test_CU00683B (int atrib) {atributo1 = 0;}
/**
* Método Main (Principal).<br>
* Se encarga de coger el valor del atributo y dar un mensaje por pantalla.
*/
public static void main (String[ ] Args) {
System.out.println ("Mensaje 1");
System.out.println ("Atributo 1 vale " + getAtrib1());
} // Cierre del main
/**
* Método para obtener el valor de atributo1
* @return el valor de atributo1
*/
public static int getAtrib1() {return atributo1;}
} //Cierre de la clase
Lo que no tengo claro es para que se quiere la variable "atrib". Porque creo que solo la usaría si se creara un objeto pero luego no la utiliza para nada ¿no?.
Espero vuestros comentarios.
Muchas Gracias,
Un Saludo,