----------------------------------------------------------

Pedro del Gallego's Weblog

« Fenomenos para-norma... | Main | El trigre : Cosas... »

20040906 lunes septiembre 06, 2004

Tigre : Overriding Return Types
No solo Rugi va a hablarnos del tigre, los demas tambien somos un poco zoologo

. Una de las nuevas caracteristicas que incorpora el tigre ;), es la capacidad de sobreescirbir el valor de retorno de un metodo al extender una clase. Esto al principio suena un poco raro, y al final a mi me sigue sonando igual de raro. Para que me sirve a mi esto. Bueno tomare un ejeplo prestado del ultimo libro de O`really sobre el tema "Java 1.5 Tiger: A Developer's Notebook"

class Point2D { protected int x, y;
public Point2D( ) {....}
public Point2D(int x, int y) {..... }
}

class Point3D extends Point2D { protected int z;
public Point3D(int x, int y) {....}
public Point3D(int x, int y, int z) {....}
}

class Position2D { Point2D location;
public Position2D(int x, int y) {...}
public Point2D getLocation( ) { return location; }
} class Position3D extends Position2D { Point3D location;
public Position3D(int x, int y, int z) {...}
public Point3D getLocation( ) { return location; }
}


Pero claro, como siempre algo huele mal en dinamarca, donde esta la trampa, por que no se a los demas a mi crear un objeto padre con una interfaz definida, para luego heredar de el y modificar esa interfaz no me parece el mejor método de mantener la "insolation" (lo siento no me sale la palabra en español). Ojo una cosa diferente es sobrecargar un metodo con lo cual no variamos la interfaz, sino que la ampliamos creando un nuevo metodo y otra modificar la interfaz de un metodo que ya existe.

EMHO, que no es nada comparada con la de David Flanagan, Brett McLaughlin que no son dos desconocidos, este es un mal ejemplo, seguramente por que esta no es una buena caracteristica (si alguien ve algun caso en el que lo fuera podria indicarla?)

interface Point {}

class Point2D extend Point{... }

class Point3D extends Point2D {.... }

class Position2D { Point2D location;
public Position2D(int x, int y) {...}
public Point getLocation( ) { return location; }
} class Position3D extends Position2D { Point3D location;
public Position3D(int x, int y, int z) {...}
public Point getLocation( ) { return location; }
}


Esto seria solo un ejemplo de mejora, por que se podria afinar muchisimo mas ahora ..... ¿es solo un mal ejemplo o es una mala caracteristica del lenguaje?
( sep 06 2004, 07:43:12 PM CEST ) Permalink Comentarios [1]

URL de la referencia: http://weblogs.javahispano.org/akuma/entry/tigre_overriding_return_types
Comentarios:

hay un par de fallos que supongo vendran por haber escrito el ejemplo directamente sobre el sistema de blogs:
una interfaz no se hereda si no que se implementa y la palabra reservada 'extend' no existe
saludos

Enviado por BillyBoy en octubre 01, 2004 a las 07:14 PM CEST #

Enviar un comentario:

Nombre:
Correo electrónico:
URL:

Su comentario:

Sintaxis HTML: Deshabilitado