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:
Invocar el constructor de la clase base:public void moverA(int x, int y) { cambiarColor("negro"); super.moverA(x,y); }
public PuntoAColor(int x, int y, String color) { super(x, y); // en vez de this.x= x; ... this.color= color; }