Polimorfismo

sergio
16 de Noviembre del 2002
Supongamos que tengo una clase Cuadrado y una clase que extiende de ésta llamada CuadradoColor

Ambas clases tiene un método quienSoy() que devuelve en un string "Cuadrado" o "CuadradoColor"

¿cómo puededo forzar el quienSoy() de Cuadrado si soy un CuadradoColor()?

Muchas gracias a todos

Aqui teneis un codigo que hace algo parecido
class Cuadrado{

// Atributos
private double ancho;
private double alto;

// Constructores

Cuadrado (double w, double h){ // Constructor cuando se
// especifican dimensiones
ancho = w;
alto = h;
}

Cuadrado (){ //Constructor cuando no se especifiquen
//dimensiones
ancho = 1;
alto = 1;
}

// Metodos
public String quienSoy() {
return "Cuadrado";
}

double volumen() { //Devuelve el volumen del cuadrado
return ancho * alto;
}
}

class CuadradoColor extends Cuadrado { // Clase CuadradoColor hereda
//de la Clase Cuadrado
int color; //Añade el atributo color


//Metodo
public String quienSoy() {
return "CuadradoColor";
}

// Constructores

CuadradoColor (double w, double h, int c){ // Constructor
//cuando se especifican dimensiones
super (w, h);
color = c;
}

CuadradoColor (){ //Constructor cuando no se especifiquen
//dimensiones
super();
color = -1;
}
}

public class PruebaCuadrado{
public static void main (String [] args){

Cuadrado miCuadrado1 = new Cuadrado (); // Creamos
//dos objetos sin inicializar
Cuadrado miCuadrado2 = new CuadradoColor ();
double vol;
String llamada;

// Llamada a un metodo para miCuadrado1
vol = miCuadrado1.volumen ();
System.out.println ("El volumen de miCuadrado1 es " + vol);

// Llamada a un metodo para miCuadrado2
vol = miCuadrado2.volumen ();
System.out.println ("El volumen de miCuadrado2 es " + vol);

llamada = miCuadrado1.quienSoy ();
System.out.println ("Yo soy un: " + llamada);

llamada = miCuadrado2.quienSoy();
System.out.println ("Y yo soy un: " + llamada);
}
}

carlitro
16 de Noviembre del 2002
la verdad es que no entindo tu pregunta

Luis Alberto
16 de Noviembre del 2002
Si no me equivoco es asi...
Si instancias a la clase PADRE tendras acceso a los dos metodos si estos no tienen alguna restriccion como PRIVATE, entonces diferenciaras a los metodos por los parametros que reciba...
Si instancias a la clase EXTENDIDA entonces no podra existir polimorfismo ya que solo tienes acceso al metodo de la clase extendida.
Si tienes dudas me escribes [email protected]