Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: el_calderas en 07 de Mayo 2015, 15:21

Título: Acceder a un atributo de clase desde el método main Java Ejercicio CU00683B
Publicado por: el_calderas en 07 de Mayo 2015, 15:21
Para este ejercicio estas son mis respuestas:

1) El error que recibimos es que la variable no estatica this no se puede referenciar desde  un metodo estatico.

2)los metodos de clase estaticos no pueden invocar a un metodo de instancia de la misma clase, que es lo que esta haciendo this.getAtrib().

3)la solución seria crear una clase que contuviera el parametro atributo1 y el metodo getAtrib1

Código: [Seleccionar]
public class Atributo
{
    int atributo1;
   
    public Atributo(){
        atributo1=0;
    }
   
    public int getAtrib1(){
        return atributo1;
    }
   
}

Código: [Seleccionar]
public class NuevoTest
{   
    public static void main (String[] Args){
        Atributo atrib=new Atributo();
       
        System.out.println("Mensaje 1");
        System.out.println("Atributo 1 vale " + atrib.getAtrib1());
    }
}

Un saludo.
Título: Re:Ejercicio CU00683B Metodos de clase o Static
Publicado por: fedegaray en 07 de Mayo 2015, 16:16
Hola el_calderas! Tu ejercicio está muy bien respondido y la solución que ofreces funciona perfecto. Nada que señalar! Sigue así!
Título: Re:Ejercicio CU00683B Metodos de clase o Static
Publicado por: Alex Rodríguez en 08 de Mayo 2015, 08:45
Hola, la solución propuesta soluciona el problema, pero se lleva el atributo fuera de la clase. Recomiendo consultar la solución indicada en https://www.aprenderaprogramar.com/foros/index.php?topic=2354 ya que se explica cómo mantener el atributo en la misma clase y evitar el error.

Saludos.
Título: Re:Ejercicio CU00683B Metodos de clase o Static
Publicado por: el_calderas en 28 de Mayo 2015, 15:32
Hola, la solución propuesta soluciona el problema, pero se lleva el atributo fuera de la clase. Recomiendo consultar la solución indicada en https://www.aprenderaprogramar.com/foros/index.php?topic=2354 ya que se explica cómo mantener el atributo en la misma clase y evitar el error.

Saludos.

Gracias por el enlace, no se me habia ocurrido esa solución, de hecho, no sabia que se podia hacer asi....
Pero ahora me surge una duda sobre estas soluciones. En ambos casos, se incluye un constructor para la clase Test, y en ambos casos no se incluye la palabra Public delante. ¿por que?
Tampoco sabia que se podia instanciar la clase que contiene el Main, y creo que en ninguno de los ejercicios que he hecho hasta ahora, esta clase incluia un constructor.

Muchas gracias por la ayuda.
Un saludo.
Título: Re:Acceder a un atributo de clase desde el método main Java Ejercicio CU00683B
Publicado por: Alex Rodríguez en 29 de Mayo 2015, 09:15
Hola, en el constructor puedes incluir public si quieres (de hecho es lo más habitual). En realidad public es uno de los cuatro modificadores de acceso que permite Java, y que son: public, private, protected y "no especificado". En este caso al o declararse modificador de acceso queda como no especificado.

Aquí se explica lo que supone cada modificador de acceso: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=665:public-private-y-protected-javatipos-de-modificadores-de-acceso-visibilidad-en-clases-subclases-cu00693b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Hay cosas que son poco frecuentes pero que se hacen cuando es necesario. Por ejemplo instanciar la clase con el main. No es habitual, pero puede hacerse. Por ejemplo no especificar modificador de acceso, no es habitual, pero puede hacerse.

Saludos