Java - Problema al heredar

 
Vista:

Problema al heredar

Publicado por Chunk (1 intervención) el 29/11/2005 09:19:44
Hola,

Estoy intentando implementar una interfaz que define las figuras de un ajedrez. De esta interfaz hereda la clase FiguraAjedrez y de esta clase hereda cada figura (Peon, alfil, etc)

Las figuras concretas lo único que tiene es un atributo estático de tipo char que se corresponde con la primera letra de su nombre, es decir P si es PEON. El caso es que FiguraAjedrez tiene un metodo toChar (que hay que implementar porque implementa la interfaz y está definido en la interfaz) el caso es que solo los hijos saben el char que tienen pero no figura.

Cómo implemento este método??

He pensado redefinirlo en todas las clases figuras concretas, es decir en que la clase Peon tenga un método toChar que devuelva el caracter.

Pero en FiguraAjedrez tendría que implementar el método porque implementa una interfaz que lo declara, cosa que no serviría para nada.

Mi pregunta es como solucionar esto, si al igual que tenemos super para referirnos a características del ancestro tenemos algún modificador para poder hacer downcasting.

Un saludo y muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Problema al heredar

Publicado por chuidiang (950 intervenciones) el 29/11/2005 11:20:56
Hola:

Tienes al menos un par de soluciones:

Puedes no implementar ese método en FiguraAjedrez. Entonces tendrías que declarar la clase abstarcta. No podrás instanciarla, pero creo que sólo quieres instanciar las clases concretas, pero si puedes implementar los otros métodos de la interface.

abstract class FiguraAjedrez implements ...
{
// Aqui todos los métodos que quieras ya implementados, excepto el toChar()
}

Luego las clases Peon, Caballo, etc sí redefinen sólo ese método (y cualquier otra cosa que te haga falta).

Otra opción es a FiguraAjedrez ponerle un atributo char, un método setChar() y el método toChar() ya implementados. Las clases hijas, en su constructor, llamarian a setChar() para poner el carcacter que sea.

class Peon extends FiguraAjedrez
{
public Peon()
{
setChar('P');
}
}

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar