Definir la clase D de modo que D sea una subclase de la clase B:
public class D extends B {
...
}
Ejemplo: se desea definir un Punto a color
public class PuntoAColor extends Punto {
String color;
public PuntoAColor(int x, int y, String color) {
this.x= x;
this.y= y;
this.color= color;
}
public void cambiarColor(String color) {
this.color= color;
}
public String toString() {
return color+"("+x+","+y+")";
} }
Ejercicio: Uso de PuntoAColor.
Experimento: Cambie el tipo de las variables p y q a Punto conservando los new PuntoAColor(...). Recompile y ejecute.
Definición: Enlace Dinámico
El método que se invoca es el que se define para el tipo dinámico de la variable.
En el ejemplo se invoca toString definido para PuntoAColor a pesar de que la variable es de tipo Punto.
Llamar el método definido para la clase base:
public void moverA(int x, int y) {
cambiarColor("negro");
super.moverA(x,y);
}
Invocar el constructor de la clase base:
public PuntoAColor(int x, int y, String color) {
super(x, y); // en vez de this.x= x; ...
this.color= color;
}