Herencia

Carter
30 de Enero del 2004
Hola a todos, tengo la siguiente clase:
import java.awt.*;

public class Dibujo extends Figura {

Dibujo() {
width = 60;
height = 60;
}

void draw(Graphics g) {
g.setColor(new Color(0x00CC00));
g.fillOval(x, y + 20, 30, 20);
g.fillOval(x + 30, y + 20, 30, 20);
g.fillOval(x + 20, y, 20, 30);
g.fillOval(x + 20, y + 30, 20, 30);
}
}

La quiero reutilizar para que en vez de mostrar un dibujo muestre una imagen. El método para que uso para que lea una imagen es:

public void paint(Graphics g)
{
BufferedImage bi = null;
try
{
bi = ImageIO.read(new File("c:/imagen.gif"));
}
catch (IOException e)
{
System.out.print("No existe tal imagen" + e);
}
finally
{
g.drawImage(bi, 50, 50, this);
}
}

Pero este método necesita que la heredar de Frame. Mi clase tiene que heredar de la clase Figura ¿Qué puedo hacer?

Como se aprecia no domino muy bien la programación orientada a objetos así que sed tan amables de contármelo con sencillez.
Muchas gracias por vuestra ayuda

Mabrev
30 de Enero del 2004
Hola:

Lo que puedes haces es que la clase Figura herede de Frame, así que tu clase tendrá todos los datos y métodos de Frame y de Figura.

Espero que te sirva.

Saludos

chuidiang
30 de Enero del 2004
No entiendo. ¿Por qué tiene que heredar de la clase Frame?

Tu hazte tu clase hija de Figura y redefine el método draw(), igual que hiciste con la clase Dibujo, pero que pinte la imagen.

Si quieres dibujar sobre un Frame, lo que tienes que hacer es heredar de Frame, instanciar la clase Figura o la hija de Figura o la que quieras. Redefines el metodo paint() del Frame para que llame a super(g) (asi se dibujara el Frame en si mismo) y luego llamas a los draw() de tus figuras.

Mas o menos esto

class Ventana extends Frame
{
protected Dibujo a = new Dibujo();
protected DibujoImagen b = new DibujoImagen();

public void paint (Graphics g)
{
super (g); // Se dibuja el Frame
a.draw(g);
b.draw(g);
...
}
}

No sé si me he explicado ...

Se bueno.