FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Metodos abstractos
Hola a todos. Estoy haciendo mis primeras armas en Java y en lo que es la POO. Mi pregunta concreta es sobre los metodos abstractos. No veo la diferencia entre usar un metodo abstracto (definido en una clase abstracta) para un cierto numero de clases (que extienden a la clase abstracta) y que cada clase lo implemente de forma diferente, a que cada clase tenga su propio metodo, ya que estos se implementan de forma diferente en cada clase.
espero haberme explicado bien |
#2
|
||||
|
||||
Hola,
Suponiendo que en Java sea igual que en Delphi, hasta donde yo llego un método "abstracto" en cierta clase está obligando a las clases descendientes a implementar dicho método. De otro modo (en el caso de Delphi) obtendrías un "warning" al tratar de compilar tal que así: Cita:
Al derivar la clase "TMyChildClass" de "TMyClass" estamos obligados a implementar en "TMyChildClass" el método "abstracto" "ShowMyName()". De no hacerlo así, la advertencia de antes, en tiempo de diseño, y, en tiempo de ejecución, una excepción "EAbstractError" si tratamos de ejecutar el método en cuestión. De tal modo que tendríamos que hacer algo así:
Ya digo. Puede que vaya más allá, pero, hasta donde llego, sirve para obligar a las clases descendientes a implementar determinados métodos. Acaso algún otro compañero pueda corregirme o en todo caso proporcionar algo más de información al respecto. |
#3
|
|||
|
|||
Metodos abstractos
Gracias Dec x contestar.
Creo que entendi cual es el objetivo de la abstraccion. Todavia no me cierra bien el tema de obligar a las clases derivadas a implementar metodos cuando cada clase puede implementar sus propios metodos. Pero puede ser que en ciertas ocaciones pueda ser util. |
#4
|
||||
|
||||
Hola,
Bueno. La verdad es que yo tampoco estoy muy puesto en estos temas, todo hay que decirlo. Sin embargo, el que puedas obligar a una clase a implementar determinados métodos... supongo que tiene su utilidad. Tal vez en algún caso incluso se haga necesario, pero, yo me quedo por el momento conque puedes hacerlo. Ojo, no que tengas que hacerlo, sino que puedes hacerlo. |
#5
|
||||
|
||||
puedes hacer esto y nadie te obliga a no hacerlo:
public class Trabajador { public Trabajador() {} public void Trabajar() {} } public class TrabajadorPersona extends Trabajador { public void Trabajar() {System.out.println("trabajando como persona");} } public class TrabajadorRobot extends Trabajador { public void Trabajar() {System.out.println("trabajando como robot");} } el problema es que si vas a crear un nuevo descendiente de Trabajador por ejemplo TrabajadorAnimal este tendrá como comportamiento predeterminado no hacer nada, entonces la solución es poner como método abstracto para que el programador que se encargue de implementar la clase TrabajadorAnimal esté obligada a ponerle algun comportamiento, ahora donde está la gracia de esto? es que debemos pensar que no siempre vamos a ser nosotros los encargados de implementar otras clases derivadas, sino que puede ser otra persona, entonces de esta manera le estamos mostrando nuestras reglas a seguir e implementar. saludos
__________________
self.free; Última edición por droguerman fecha: 15-08-2007 a las 18:01:10. |
#6
|
||||
|
||||
Simple
Te obliga a la de a huevo (forsozamente) a que tengas que hacer(al menos declarar) esos métodos, aunque a simple vista parece inútil, cuando desarrollas para que a posteriori otros programadores lo utilicen, pues resulta mas comodo ver que en la clase abstracta hay un método que yo llamo con ciertos parametro y me regresa esto de tal forma, ya asi no mre preocupa como lo implementaron...
Y bueno, el segundo y mas importante punto, en java no hay polimorfismo, gracias a las clases abstractas se puede realizar por asi decirlo, una emulación del mismo
__________________
"Porque es tan idiotamente sorda la fé y tan ciego el que cree?".
|
#7
|
||||
|
||||
Que en java no hay polimorfismo?? Querras decir quizas, que no hay herencia multiple, pero polimorfismo claro que hay.
__________________
Héctor Geraldino Software Engineer |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
metodos de ordenacion de matrices | rls | Varios | 3 | 22-09-2006 03:50:03 |
herencia de metodos | supermilloriver | OOP | 7 | 07-01-2006 14:46:01 |
Metodos del API Lotus Notes!! | DB-ADO | API de Windows | 1 | 14-03-2005 18:49:27 |
Métodos de clase. | jplj | OOP | 14 | 22-11-2004 09:30:19 |
problemas con clases y metodos | rojito | JAVA | 1 | 03-10-2004 23:06:28 |
|