Autor Tema: Ejercicio CU00683B metodos static java de clase o de instancia diferencias metod  (Leído 2346 veces)

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
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:

Citar
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
Citar
¿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());

Citar
¿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

Citar
¿Cómo podemos solucionarlo para que se ejecute lo que pretendemos?
He modificado las 3 líneas comentadas anteriormente:
Código: [Seleccionar]
/**
 * 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,

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Buenos días, las respuestas son correctas

La duda sobre la atrib: atrib es un parámetro que se recibe para un constructor. Sin embargo, después no se utiliza, por lo tanto tienes razón en el sentido de que ese parámetro no parece útil porque en este código no se utiliza para nada. Sin embargo ten en cuenta que esto es un ejercicio y también que este código podría ser el principio de un código más extenso y que ese parámetro pudiera ser útil posteriormente.

En este hilo se hacen algunos comentarios interesantes sobre este ejercicio, https://www.aprenderaprogramar.com/foros/index.php?topic=2354.0

Saludos

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Hola Mario,

Gracias por tus explicaciones. Lo que me preocupaba era que no hubiera entendido bien el ejercicio y tuviera que hacer algo con la variable Atrib.

Muchas gracias,

Un Saludo,

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".