elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ¿Herencia?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Herencia?  (Leído 2,153 veces)
Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
¿Herencia?
« en: 3 Junio 2012, 14:58 pm »

El otro día me dio por pensarlo y desde entonces no he logrado nada.

Todos sabemos que podemos hacer una llamada a un constructor y en la misma instanciación modificar uno o más métodos.
Algo así:

Código
  1. Nota a = new Nota()
  2. {
  3. @Override
  4. public String toString()
  5. {
  6. return nota;
  7. }
  8. };
  9.  

Creo que esto está permitido gracias a la herencia de Java, ya que la variable nota tiene que estar protegida y no ser privada para poder hacer uso de ella.
Resumiendo creo que con eso estamos haciendo un extends de Nota y guardandolo en una declaración Nota.

El dilema que me surge a mi es que pasa si en lugar de @Override yo añado un método nuevo que no pertenece a la clase nota
Es decir:

Código
  1. Nota a = new Nota()
  2. {
  3. public double notaSobre1()
  4. {
  5. return nota*0.10;
  6. }
  7. };
  8.  

El compilador me deja hacerlo sin embargo Nota no sabe que ese método existe y por tanto nunca se podrá hacer uso de él.
Y mi pregunta es, si no puede ser llamado nunca ¿porque te deja crearlo?


En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: ¿Herencia?
« Respuesta #1 en: 3 Junio 2012, 20:48 pm »

Estás seguro que no lo puedes llamar ?

Código
  1. class Nota{
  2. public double nota = 1;
  3. }
  4. public class Test{
  5. public static void main(String... arg){
  6. (new Nota(){
  7. public double notaSobre1(){
  8. System.out.println("Entramos en el metodo");
  9. return nota*0.10;
  10. }
  11. }).notaSobre1();
  12. }
  13. }
  14.  


En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: ¿Herencia?
« Respuesta #2 en: 3 Junio 2012, 21:17 pm »

Pero tu haces trampa xD

Tu lo declaras y lo usas sin guardarlo en una variable. Yo al guardarlo en una variable pierde las propiedades nuevas.

Para que me entiendas

Código
  1. Nota a = new Nota();
  2. a.metodosDeNota(); // En este caso solo tengo acceso a los métodos de la variable
  3. new Nota(){metodos}; En este tengo acceso a los métodos de la instanciación.
  4.  

Si tu guardas un objeto que extiende de otro en una variable del tipo no extendido no puedes hacer uso de los métodos de la extendida.
Es decir

Código
  1. Nota a = new Nota();
  2. Nota b = new NotaExtendida();
  3.  
  4. b.metodosDeNota(); // No puedo acceder a los métodos de NotaExtendida
  5.  
  6.  

Viendo lo que has escrito el único razonamiento lógico que veo es el poder extender rápidamente de una clase que necesitas una sola vez y que inmediatamente va a desaparecer.
En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: ¿Herencia?
« Respuesta #3 en: 3 Junio 2012, 22:32 pm »

He respondido a la pregunta que planteaste
"Y mi pregunta es, si no puede ser llamado nunca ¿porque te deja crearlo?"

Son clases anónimas , entre otras cosas sirven para la gestión de eventos.
http://es.scribd.com/walter_ortiz_9/d/50787986/33-Clases-anonimas-en-la-gestion-de-eventos

Lo que comentas está ligado al polimorfismo más que a la herencia .
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: ¿Herencia?
« Respuesta #4 en: 3 Junio 2012, 23:14 pm »

Pues eso digo, que lo único plausible es hacerlo de la forma que has puesto tu anteriormente.
Y cierto, es polimorfismo.

Pues nada, duda solucionada.
Gracias tío.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Herencia en php
PHP
Hadess_inf 2 6,075 Último mensaje 23 Octubre 2009, 21:24 pm
por HardieVon
Herencia y POO
Programación C/C++
Arobavx 0 2,308 Último mensaje 7 Noviembre 2010, 19:44 pm
por Arobavx
Herencia
Java
m@o_614 6 4,530 Último mensaje 20 Abril 2012, 00:46 am
por m@o_614
herencia
Programación C/C++
cazagavilan 2 2,082 Último mensaje 23 Abril 2012, 19:14 pm
por cazagavilan
HERENCIA
Java
ALBUR 2 2,141 Último mensaje 7 Mayo 2012, 10:26 am
por ALBUR
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines