POO, sobreescribir metodos.

¿Se puede sobreescribir el método de una nueva instancia (objeto)?

Aunque aún no tengo proyecto alguno, constantemente me pregunto como haría mis aplicaciones .Net pero ahora en Java... y ahora me surgió la duda pues mi pregunta contestaría el manejo de eventos en .Net, pero estoy muy interesado en dar ese paso al gran mundo de Java.

De antemano gracias por su tiempo. Salud 2

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Quieres decir en runtime? No

Quieres decir en runtime? No no es posible.

Se puede sin embargo que un método reciba un objeto que se encargue de ejecutar la lógica.

Quizá sería más claro si escribieses algo de código en .net y te podríamos ( alguien ) decir como hacerlo en Java.

Chau!

Imagen de ezamudio

en runtime

Bueno en runtime se puede con CGLIB o javassist, no? Pero ANTES de que se use por primera vez el método. Si quieres modificar el método solamente en una instancia, técnicamente podría ser posible pero no ha de estar nada fácil. Con AOP tal vez (y CGLIB/javassist): agregas un método nuevo a la clase y un aspecto en el método original, para que si se cumple una condición (que el receptor es cierta instancia) se invoque realmente el otro método.

Pero sospecho que no es lo que estás queriendo preguntar, Othello. Tal vez te refieras a sobreescribir métodos en subclases? Eso es posible en Java siempre y cuando el método esté marcado como public, protected, o package (la marcación package es tácita, es decir, si el método no tiene un modificador, es package). Pero en el caso de package, se puede sobreescribir solamente si la subclase está en el mismo paquete que la superclase, porque de otra forma el método no es visible.

Muchas gracias por su apoyo caballeros!!

Lamentablemente mis tiempos son demasiado limitados y tardo en responder no por falta de ganas...
Me gusto mucho la opción de AOP y CGLIB/javassist que menciona ezamudio, y también OscarRyz tiene mucha razón en como debería complementar mis preguntas.
 

y entonces en la clase Main...
 

En fin, estudiaré acerca de las tecnologías recomendadas y nuevamente les agradezco por su tiempo.

Salud 2

Imagen de ezamudio

delegate

Ese es el patrón de diseño observer que .NET tiene algunas facilidades para implementarlo de manera más directa. No tiene nada que ver con la pregunta original, o si eso es lo que estabas preguntando, de plano estuvo muy mal planteado.

Eso en Java se hace definiendo una interfaz, teniendo una propiedad en el objeto, e invocando el método apropiado en el objeto al momento de modificar la propiedad.

 

De manera complementaria,

De manera complementaria, eventualmente llegarás a querer hacer esto mismo con una interfaz gráfica.

En ese caso, Java tiene un mecanismo de eventos diferente al que tiene .net

Acá hay un tutorial sobre el manejo de eventos, quizá después te sirva.

Que pena ezamudio y OscarRyz

Que pena ezamudio y OscarRyz una vez mas tienen mucha razón, y justo estaba leyendo el libro de "Patrones de diseño aplicados a Java" por Stephen stelting / olav maassen, de Pearson Prentice Hall, el cual me parece muy bueno para aprender patrones de diseño y si ví un poco del Observer solo que no le dí mucha importancia (no le dí el tiempo necesario).
En fin, es gratificante caminar entre gigantes aunque... los buenos los buenos son de Pittsburgh.

Nuevamente Saludos y gracias por su apoyo.