Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 13 de Octubre 2018, 16:31

Título: Java qué significa static Concepto de métodos de clase o static ejemplo CU00683B
Publicado por: paramonso en 13 de Octubre 2018, 16:31
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  ;).
Título: Re:Java qué significa static Concepto de métodos de clase o static ejemplo CU00683B
Publicado por: Ogramar en 06 de Agosto 2019, 22:33
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