Autor Tema: Java qué significa static Concepto de métodos de clase o static ejemplo CU00683B  (Leído 1451 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Dejo el Ejercicio CU00683B del tutorial pdf de programación Java. Concepto de métodos de clase o static y métodos de instancia. Diferencias. Método main de Java.

Citar
EJERCICIO
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? ¿Por qué se obtiene este mensaje de error? ¿Cómo podemos solucionarlo para que se ejecute lo que pretendemos? Puedes comprobar si tus respuestas son correctas consultando en los foros aprenderaprogramar.com


¿Qué mensaje de error se obtiene?

non-static variable this cannot be referenced from a static context
(variable no estática a la que no se puede hacer referencia desde un contexto estático)


¿Por qué se obtiene este mensaje de error?

Por que se llama a un metodo no estatico desde un metodo estatico.


¿Cómo podemos solucionarlo para que se ejecute lo que pretendemos?

Creando un nuevo objeto Test dentro del método main .Al crear un objeto dentro de un método, este objeto hereda todas la propiedades del método donde se ha creado.
Y luego llamando al método con el nombre de la clase que lo contiene (en este caso con el nombre del objeto creado).

       public static void main (String[ ] Args) {
        int atri=0;
        Test test=new Test(atri);

        System.out.println ("Mensaje 1");
        System.out.println ("Atributo 1 vale" + test.getAtrib1());
    } //Cierre del main
     
   
 Cambiando la variable int atributo=0 a static int atributo=0
 Y el metodo public int getAtrib1() {return atributo1;}
  a public static int getAtrib1() {return atributo1;}
    static int atributo1;
    Test (int atrib) {atributo1 = 0;}
    public static void main (String[ ] Args) {
        System.out.println ("Mensaje 1");
        System.out.println ("Atributo 1 vale" + Test.getAtrib1());
    } //Cierre del main
    public static int getAtrib1() {return atributo1;}
} //Cierre de la clase

Gracias  ;).
« Última modificación: 06 de Agosto 2019, 22:29 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Buenas, para quien revise este ejercicio, las respuestas son correctas. Si se quiere ver algún comentario adicional puede verse https://aprenderaprogramar.com/foros/index.php?topic=2354.0

Salu2

 

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".