Definición de Subclases y Herencia

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. R.-

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;
}

Propuesto: Ordenamiento genérico de arreglos

Si Ud. dispone de tiempo, le resultará muy instructivo realizar el ejercicio Ordenamiento Genérico de Arreglos que aparece en los apéndices.