Foros del Web » Programación para mayores de 30 ;) » Java »

Ejemplo de herencia..., debería funcionar?

Estas en el tema de Ejemplo de herencia..., debería funcionar? en el foro de Java en Foros del Web. Hola, Tengo implementado la siguiente estructura de clases: Ventana (extends JFrame) | |____ VentanaHija1 (extends Ventana) | |____ VentanaHija2 (extends Ventana) | |____ VentanaHija3 (extends ...
  #1 (permalink)  
Antiguo 30/04/2008, 01:34
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años, 6 meses
Puntos: 1
Pregunta Ejemplo de herencia..., debería funcionar?

Hola,

Tengo implementado la siguiente estructura de clases:

Ventana (extends JFrame)
|
|____ VentanaHija1 (extends Ventana)
|
|____ VentanaHija2 (extends Ventana)
|
|____ VentanaHija3 (extends Ventana)

Es decir, una clase q extiende de JFrame, y tres clases q heredan de esta última. Las tres clases hijas quiero q sean JFrames.

- Si heredo las hijas del padre (como está en la "imagen") no funcionan correctamente.
- Si heredo las hijas de JFrame, todo funciona correctamente, pero pierdo la herencia con la clase Ventana.

Las cuatro ventanas son JFrames.

Si Ventana hereda de JFrame, las hijas deberían tener tb las propiedades de JFrame, al heredar de Ventana??

Un saludo y gracias!
  #2 (permalink)  
Antiguo 30/04/2008, 01:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 52
Antigüedad: 17 años
Puntos: 0
Re: Ejemplo de herencia..., debería funcionar?

Si, si ventana desciende de JFrame las hijas de Ventana tambien heredan de JFrame
y tendran dichas propiedades

Salu
  #3 (permalink)  
Antiguo 30/04/2008, 01:40
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Ejemplo de herencia..., debería funcionar?

De acuerdo... Pues entonces alguna otra cosa hago mal

Gracias!
  #4 (permalink)  
Antiguo 30/04/2008, 03:26
 
Fecha de Ingreso: noviembre-2007
Mensajes: 52
Antigüedad: 17 años
Puntos: 0
Re: Ejemplo de herencia..., debería funcionar?

Accedes a esos atibutos con super. ???
  #5 (permalink)  
Antiguo 30/04/2008, 03:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Re: Ejemplo de herencia..., debería funcionar?

Cita:
Iniciado por XenZo Ver Mensaje
Accedes a esos atibutos con super. ???
En realidad no hace falta si no has sobre-escrito esos atributos.

Quiza haria falta definir "no funcionan correctamente" para saber cual es el problema .

Al extender puedes haber ocultado cosas, como constructores, que sean necesarios para funcionar bien.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #6 (permalink)  
Antiguo 30/04/2008, 07:21
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 10 meses
Puntos: 6
Re: Ejemplo de herencia..., debería funcionar?

La respuesta es que JAVA es un lenguaje de programacion que no soporta la multiple herencia, por lo tanto caundo las ventanas hijas heredan de ventana y a su vez esta hereda de JFrame no funciona. Una clase en java puede implementar (implements) mas de una clase(interface) pero solo puede extender una sola. Aunque pensandolo bien no se si esto es herencia multiple mmmm, me queda la duda
saludos
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]

Última edición por djagu_26; 30/04/2008 a las 07:32 Razón: duda sobre respuesta
  #7 (permalink)  
Antiguo 30/04/2008, 10:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Re: Ejemplo de herencia..., debería funcionar?

Cita:
Iniciado por djagu_26 Ver Mensaje
La respuesta es que JAVA es un lenguaje de programacion que no soporta la multiple herencia....
Estás confundido, eso no es herencia multiple.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 30/04/2008, 13:54
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Re: Ejemplo de herencia..., debería funcionar?

Tal vez si pusieras el codigo de cada una podriamos ver mejor tu problema

Si lo haces, ojala lo hagas postenaod el codigo entre las etiquetas CODE o PHP para que podamos verlo mas facilmente
__________________
se despide hasta la proxima
Gonzalo Castillo
  #9 (permalink)  
Antiguo 01/05/2008, 04:37
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Ejemplo de herencia..., debería funcionar?

Ok, vamos a ver si consigo explicarlo bien (gracias por las respuestas):

Tengo cuatro ventanas.

- VentanaInicial: es la ventana padre y tiene algunos métodos q me interesaría utilizar en las ventanas hijas. La clase, ente otras cosas tiene el siguiente código:

Código:
public class VentanaInicial extends JFrame {	
    private JButton bt_opc1;		  	
    public static void main(String args[]) {
    	new VentanaInicial().setBounds(15, 15, 1250, 750);
    }
	public VentanaInicial() {
		setVisible(true);
                bt_opc1 = new JButton("Iniciar");
                bt_opc1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				iniciar();
			}
		});
                getContentPane().setLayout(null);
                getContentPane().add(bt_opc1);
                bt_opc1.setBounds(430, 400, 390, 30);
                pack();
       }

        public void iniciar() { 	
		this.setVisible(false);
		new VentanaReparto().setBounds(15, 15, 1250, 750);
	}
}
Y ahora una de las ventas hija. Lo q no consigo hacer es q, al pinchar sobre el botón "Iniciar" se me cierre la ventana padre. Sí q lo consigo si heredo las hijas de JFrame, pero no si heredan del padre.
Código:
public class VentanaReparto extends JFrame {		  	

	private JLabel lbl_texto;
	private JButton bt_ok;
	
	public VentanaReparto() {
		setVisible(true);
		
		lbl_texto = new JLabel("Proceso ");								
                getContentPane().setLayout(null);        
        
                getContentPane().add(lbl_texto);
                lbl_texto.setBounds(75, 55, 700, 23);

		pack();
	}						
}
He intentado poner sólo lo justo y necesario para poder probar el código. Faltan imports, pero creo q nada más.

Mi objetivo es q la clase hiija herede de VentanaInicial, pero si lo hago así, al cambiar de ventana (setvisible=false en el padre no funciona), y si hereda de JFrame (la clase hija) entonces sí... Es un poco raro, por lo q deduzco q algo estoy haciendo mal.
  #10 (permalink)  
Antiguo 01/05/2008, 11:34
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Re: Ejemplo de herencia..., debería funcionar?

Ek asunto puede ir debido a que al heredarla de VentaInicial tb heredan el metodo iniciar() entonces ahi debes tener cuidado con a que metodo iniciar estas llamando.
__________________
se despide hasta la proxima
Gonzalo Castillo
  #11 (permalink)  
Antiguo 01/05/2008, 11:38
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Ejemplo de herencia..., debería funcionar?

¿Te refieres al constructor, en el que tengo creados los componentes de la ventana padre?
  #12 (permalink)  
Antiguo 01/05/2008, 11:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Re: Ejemplo de herencia..., debería funcionar?

El problema, a al menos uno de ellos, es que no te has dado cuenta que al sobre-escribir los constructores, no se estan ejecutando los constructores padre.

Prueba a poner

super();

como primera linea de los constructores, tanto de VentanaInicial como de VentanaReparto. El constructor de JFrame hace cosas importantes y por tanto debe llamarse.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #13 (permalink)  
Antiguo 01/05/2008, 11:45
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Ejemplo de herencia..., debería funcionar?

He añadido

super()

pero siguen cargándose los componentes de la clase padre.

Estoy pensando... al llamar al constructor de una clase hija, se llama tb por defecto a l constructor de la clase padre? Si es así, en el de la clase padre tengo creados los componentes...
  #14 (permalink)  
Antiguo 02/05/2008, 07:59
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 10 meses
Puntos: 6
Re: Ejemplo de herencia..., debería funcionar?

Hola para mi es un problema de polimorfismo al instanciar las ventanas. no me puedo dar cuenta porq no veo el codigo pero creo q viene por ese lado.
saludos
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
  #15 (permalink)  
Antiguo 03/05/2008, 04:34
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Ejemplo de herencia..., debería funcionar?

Si... es algo así. Es al llamar al constructor de la clase hija, q yo creo q se llama también al de la clase padre (no sé si eso es lo q implica tb la herencia, por definición!).

Siendo así, hay alguna forma de evitarlo? Q no se llame al constructor padre al llamar al constructor de la clase hija?

Tal vez si meto el código de los constructores en dos funciones q se llamen igual, al llamarla en la clase hija se llamará sólo a su clase, al no llamarla como super.nombre_funcion() ...

Haré pruebas a ver si consigo solucionarlo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.