Haber me explico mejor con un ejemplo:

La clase persona extiende a Thread con su metodo run y todo su parafernalia, y tiene una funcion llamada getEdad().
Lanzado el hilo de la clase persona se puede llamar a dicha funcion?? (a getEdad())

Da problemas porque al lanzar el hilo, el tipo guardado es un thread no un objeto persona y hacer un cast da fallo tambien.
Imagino que no se podra puesto que un hilo es algo muy independiente que solo puede comunicarse con otros hilos pero si alguien sabe me ahorrara cambiar la estructura del programa!
En 1º en 2º o en 3º BETICO hasta que muera
public class Persona extends Thread{

public int getEdad(){
return 18;
}
public void run(){

}

public static void main(String []args){
Persona pepe=new Persona();
pepe.start();
System.out.println(pepe.getEdad());


}

}
Y la respuesta a " Acceder a metodos privados de una clase hecha hilo" como bien lo indicas los metodos privados solo son accesados desde la clase donde fueron declarados. lo debes colocar con public para que sea accesado desde cualquier otra clase que implemente la clase persona.

Cuando heredas de Thread el objeto persona adquiere las propiedades de Thread, por lo cual no es necesario hacer ningun cast para Thread.
Es decir puedes usar el objeto persona como un Thread pues practicamente eso es.

Espero esa sea tu dudad man,
Muchas gracias Adwind aunque a "Acceder a metodos privados de una clase hecha hilo" no me referia a metodos con la etiqueta private, sino a metodos dentro de la clase Persona. Si cierto, me explico como el culo.
Mi fallo (y muy gilipollas) era:
public class Persona extends Thread{
 
public int getEdad(){
return 18;
}
public void run(){
 
}
 
public static void main(String []args){
Persona pepe=new Persona();

Thread hilo = new Thread(Persona);
hilo.getEdad(); //Error...

hilo.start();
System.out.println(pepe.getEdad());
 
 
}
 
}
Gracias por tu respuesta!
En 1º en 2º o en 3º BETICO hasta que muera
davidad escribió:Muchas gracias Adwind aunque a "Acceder a metodos privados de una clase hecha hilo" no me referia a metodos con la etiqueta private, sino a metodos dentro de la clase Persona. Si cierto, me explico como el culo.
Mi fallo (y muy gilipollas) era:
public class Persona extends Thread{
 
public int getEdad(){
return 18;
}
public void run(){
 
}
 
public static void main(String []args){
Persona pepe=new Persona();

Thread hilo = new Thread(Persona);
hilo.getEdad(); //Error...

hilo.start();
System.out.println(pepe.getEdad());
 
 
}
 
}
Gracias por tu respuesta!
Pero se aprendió algo nuevo :).
Responder

Volver a “Java”