Problema con objetos.

Iniciado por ThePinkPanther, 14 Marzo 2014, 03:41 AM

0 Miembros y 1 Visitante están viendo este tema.

ThePinkPanther

Hola gente,surgio un problema mientras practicaba java..

suponiendo que tengo 2 clases , clase 1 y clase 2.

la clase 2 , es la que contiene el metodo main.

Si yo dentro de los atributos de la CLASE 2,defino un objeto de la clase1 ,supongamos clase1 objeto;

dentro del metodo main de la clase 2 no puedo realizar esto :

objeto=new clase1();

porque obtengo el siguiente error :

Citarnon-static variable escribir2 cannot be referenced from a static

pero si hago por ejemplo ..

this->iniciarobjeto();

y en mi metodo iniciarobjeto de la clase 2 :

public void iniciarobjeto(){
objeto=new clase1() ;
}

esto me deja...


----------

si defino el objeto ( clase1 objeto ) dentro del metodo main , y a continuación lo creo : objeto=new clase1() ; , me permite , pero no así , si lo defino dentro de los atributos de la clase, a que se debe ?..

esto quiere decir que desde un metodo estatico no puedo inicializar objetos de la clase o modificar cualquier atributo ? , no puedo utilizar this para hacerlo tampoco.

esto de java me tiene medio confundido , soy novato en el paradigma orientado a objetos,perdonen las molestias.



gordo23

Hola, según entiendo yo, tanto los métodos como las variables statics, pueden ser llamadas sin crear un objeto, por ejemplo, si tenemos una clase Vehiculo con una variable static:

public static int cantidadAutos = 0;

y un método static:

public static void getCantidadAutos() {
    return cantidadAutos;
}


podés llamar a esta variable y al método de esta forma:

llamada a la variable: Vehiculo.cantidadAutos
llamada al método: Vehiculo.getCantidadAutos()

Es decir, podés o no instanciar la clase vehiculo de la forma Vehiculo auto = new Vehiculo() para usar los miembros static de esta.

El error es debido a que si usas un miembro no-static, es decir, un miembro que existe a partir de instanciar la clase a la que pertenece, en un método static que puedes usarlo sin instanciar la clase, corres el riesgo de que al usar ese método, el miembro no-static no exista.

Uff, espero que puedas entenderlo, realmente no se explicar muy bien las cosas. En fin, si no entendiste intento explicarlo mejor, o por ahí alguien con mejor conocimiento del tema lo pueda hacer.

Saludos.-

ThePinkPanther

Muchas gracias ,ahora entiendo , un metodo estatico y una viriable estatica se pueden llamar sin instanciar la clase, y en caso de no instanciar la clase no existen mis atributos no-estaticos por lo que no puedo referir desde metodos estaticos atributos no-estaticos.

no es asi? :rolleyes:

gordo23

:D Qué bueno que entendiste. Realmente creí que estaba explicandolo muy mal, jajaja. Bueno, suerte y seguí prácticando! ;)

Saludos.-

ThePinkPanther

Muchas gracias  ::) , problema solucionado , seguiré tu consejo , hasta la proxima.