Foro de elhacker.net

Programación => Java => Mensaje iniciado por: cyberserver en 10 Septiembre 2010, 05:21 am



Título: Herencia a A desde B,C actualizando valores de A
Publicado por: cyberserver en 10 Septiembre 2010, 05:21 am
 :huh: :huh: :huh: :huh: perdon pero no super como ser mas especifico en el titulo del tema. veran esto es lo que quiero hacer:

1.- tengo una super Clase que se llama "SuperClase" y tiene una variable publica llamada Valor
Código
  1. class SuperClase{
  2. public int Valor=0;
  3. }
  4.  

2.- Tengo dos SubClases que heredan de "SuperClase" llamadas "SubClase1" y "SubClase2"
Código
  1. class SubClase1 extends SuperClase{
  2. public void ValorSubClase(){
  3. JOptionPane.showMessageDialog(null,"Valo: "+ Valor);
  4. }
  5. }
  6. class SubClase2 extends SuperClase{
  7. public void ValorSubClase(){
  8. JOptionPane.showMessageDialog(null,"Valo: "+ Valor);
  9. }
  10. }
  11.  

3.- Ahora desde el Main instancio a las 2 clases que heredan de "SuperClase"
Código
  1. public static void  main (String[] args)  {
  2.  
  3. SubClase1 objeto1=new SubClase1();
  4. SubClase2 objeto2=new SubClase2();
  5. }
  6.  

4.- Con JOptionPane pido que me muestre el la variable Valor
Código
  1. public static void  main (String[] args)  {
  2.  
  3. SubClase1 objeto1=new SubClase1();
  4. SubClase2 objeto2=new SubClase2();
  5.  
  6. JOptionPane.showMessageDialog(null,"Valor :nstancia uno "+ objeto1.Valor);
  7. }
  8.  

Esto me da como mensaje un 0 que es el valor de la variable Valor

5.- Ahora y el problema es que desde el objeto1 Cambio el valor de la Variable Valor por 1.
Pero cuando desde el objeto2 llamo a la variable Valor me muestra 0 en lugar del 1 que se asigne....  :huh: :huh: :huh:

Código
  1. public class main{
  2. public static void  main (String[] args)  {
  3.  
  4. SubClase1 objeto1=new SubClase1();
  5. SubClase2 objeto2=new SubClase2();
  6.  
  7. JOptionPane.showMessageDialog(null,"Valor :nstancia uno "+ objeto1.Valor);
  8. objeto1.Valor=1;
  9.  
  10. JOptionPane.showMessageDialog(null,"Valor instancia dos: "+ objeto2.Valor);
  11. }
  12.  
  13.  

Quiza este mal mi implementacion de la herencia pero es lo que entiendo al ver estas imagenes alusivas:
(http://javabasico.osmosislatina.com/curso/graficas/herencia.gif)
Quiero entender que las subclases heredan de la super clase y si un valor cambiar en esta TODAS las subclases lo tendrian presente.!
----------------------------------------------------------------------------------
 De lo contrario si no es asi como puedo obtener el Valor ACTUALIZADO de la Variable Valor desde cualquier clase que instancie o herede de ella???????

De antemano Gracias.!!



Título: Re: Herencia a A desde B,C actualizando valores de A
Publicado por: 1mpuls0 en 10 Septiembre 2010, 06:29 am
Hola, no soy muy bueno explicando pero espero que este ejemplo te ayude a entender.

Código
  1. public class Abuelo {
  2. public int dedos=20;
  3. }
  4.  

Código
  1. public class Papa extends Abuelo {
  2.  
  3. }
  4.  

Código
  1. public class Tio extends Abuelo {
  2.  
  3. }
  4.  

Código
  1. import javax.swing.JOptionPane;
  2.  
  3. public class Main {
  4.  
  5. public static void main(String args[]) {
  6. Papa manoPapa = new Papa();
  7. Tio manoTio = new Tio();
  8.  
  9. JOptionPane.showMessageDialog(null,"Mi papa tiene "+ manoPapa.dedos +" dedos");
  10. manoPapa.dedos=10;
  11. JOptionPane.showMessageDialog(null,"Mi tio tiene "+ manoTio.dedos +" dedos");
  12. //JOptionPane.showMessageDialog(null,"Mi papa tiene "+ manoPapa.dedos +" dedos");
  13.  
  14. }
  15.  
  16. }
  17.  

Solo espero no causar mas lios! xD


Un saludo


Título: Re: Herencia a A desde B,C actualizando valores de A
Publicado por: Debci en 10 Septiembre 2010, 17:23 pm
Piensa que cada vez que instancies una clase esta re-creando todas las variables de instancia que esta contiene, dos objetos distintos, propiedades desiguales...

Saludos


Título: Re: Herencia a A desde B,C actualizando valores de A
Publicado por: cyberserver en 10 Septiembre 2010, 22:03 pm
Hola.

Darhius gracias por tu ejemplo pero corrovora lo que dice Debci....

Pero no existe una forma de enlazarlas como yo quiero? que las subclases estan atentas de cualquier modificacion de la super clase...!!!!



Título: Re: Herencia a A desde B,C actualizando valores de A
Publicado por: Xedrox en 10 Septiembre 2010, 22:22 pm
Código:
public class main{
public static void  main (String[] args)  {
 
SubClase1 objeto1=new SubClase1();
SubClase2 objeto2=new SubClase2();
 
JOptionPane.showMessageDialog(null,"Valor :nstancia uno "+ objeto1.Valor);
objeto1.Valor=1;
 
JOptionPane.showMessageDialog(null,"Valor instancia dos: "+ objeto2.Valor);
}

Hola, por supuesto que te vuelve a mostrar 0, si estas mostrando en la segunda vez en objeto2 y vos le asignaste "1" al objeto1.


Título: Re: Herencia a A desde B,C actualizando valores de A
Publicado por: Xedrox en 10 Septiembre 2010, 22:24 pm
Hola.

Darhius gracias por tu ejemplo pero corrovora lo que dice Debci....

Pero no existe una forma de enlazarlas como yo quiero? que las subclases estan atentas de cualquier modificacion de la super clase...!!!!



Podes usar el modificador "static" para los datos miembros. Esto hace que todos los objetos de una misma clase o subclase vean y modifiquen el mismo dato miembro. Te recomiendo que busques mas información acerca de ese modificador.


Título: Re: Herencia a A desde B,C actualizando valores de A
Publicado por: cyberserver en 10 Septiembre 2010, 22:31 pm
Citar
Podes usar el modificador "static" para los datos miembros. Esto hace que todos los objetos de una misma clase o subclase vean y modifiquen el mismo dato miembro. Te recomiendo que busques mas información acerca de ese modificador.


AAAAAAAA no manches.... Xedrox!!!!! eso es todo funciona perfectamente.....mira aqui es codigo..!!!

Código
  1. import javax.swing.*;
  2.  
  3.  
  4. public class main{
  5. public static void  main (String[] args)  {
  6.  
  7. SubClase1 objeto1=new SubClase1();
  8. SubClase2 objeto2=new SubClase2();
  9.  
  10. JOptionPane.showMessageDialog(null,"Valor :nstancia uno "+ objeto1.Valor);
  11. objeto1.Valor=1;
  12.  
  13. JOptionPane.showMessageDialog(null,"Valor instancia dos: "+ objeto2.Valor);
  14. JOptionPane.showMessageDialog(null,"Valor :nstancia uno "+ objeto1.Valor);
  15. }
  16.  
  17. }
  18. class SuperClase{
  19. public static int Valor;
  20. }
  21. class SubClase1 extends SuperClase{
  22. public void ValorSubClase(){
  23. JOptionPane.showMessageDialog(null,"Valo: "+ Valor);
  24. }
  25. }
  26. class SubClase2 extends SuperClase{
  27. public void ValorSubClase(){
  28. JOptionPane.showMessageDialog(null,"Valo: "+ Valor);
  29. }
  30. }

Mil Gracias!!!!... amigo