Foros del Web » Programación para mayores de 30 ;) » Java »

cual es la diferencia entre sobre escritura de métodos y polimorfismo

Estas en el tema de cual es la diferencia entre sobre escritura de métodos y polimorfismo en el foro de Java en Foros del Web. cual es la diferencia entre sobre escritura de métodos y polimorfismo ya que yo pienso que es lo mismo...
  #1 (permalink)  
Antiguo 16/04/2014, 01:44
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
cual es la diferencia entre sobre escritura de métodos y polimorfismo

cual es la diferencia entre sobre escritura de métodos y polimorfismo ya que yo pienso que es lo mismo
  #2 (permalink)  
Antiguo 16/04/2014, 03:32
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Eso es como decir que todos los animales son insectos sólo porque todos los insectos son animales (una burrada vamos).

De hecho ni siquiera es necesario la sobreescritura para el polimorfismo estrictamente. Solo con tener dos clases diferentes con el mismo método se consideraría que es polimorfismo, aunque lo normal es que tengan alguna relación entre ellas y sobreescriban un método (por herencia, interfaces, etc).
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 16/04/2014, 04:14
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Cita:
Iniciado por Fuzzylog Ver Mensaje
Eso es como decir que todos los animales son insectos sólo porque todos los insectos son animales (una burrada vamos).

De hecho ni siquiera es necesario la sobreescritura para el polimorfismo estrictamente. Solo con tener dos clases diferentes con el mismo método se consideraría que es polimorfismo, aunque lo normal es que tengan alguna relación entre ellas y sobreescriban un método (por herencia, interfaces, etc).
si te entiendo pero cual es la diferencia, ya que se me hace que es lo mismo y si tienes un ejemplito en código mejor para ver la diferencia

gracias
  #4 (permalink)  
Antiguo 16/04/2014, 06:15
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Hola:

Van muy ligados, pero no es exactamente lo mismo. Sobreescribir un metodo es hacer una clase hija que tenga un método igual que el de la clase padre, pero con otro código. Con una clase hija que sobreescriba un método puedes usar o no polimorfismo.

El polimorfismo lo usas cuando metes una clase hija en una variable del tipo de la padre y llamas al método en cuestión. Aunque el tipo es de la clase padre, se llama al método de la clase hija.

La diferencia es la misma que entre escribir un método y llamarlo. Que sobreescribas un método no quiere decir que luego vayas a usarlo con polimorfismo después.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 16/04/2014, 09:05
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Hola:

De forma general se puede decir q el polimorfismo es la capacidad de, utilizando el mismo código, ejecutar operaciones en objetos de diferentes tipos.
En java la sobre escritura de métodos es una de las formas de crear polimorfismo.
Pero no es la única, ni java es el único lenguaje q soporta polimorfismo.

Ejemplos de polimorfismo (algunos soportados por java, otros no) también son:

- Sobrecarga de métodos (métodos de igual nombre pero con parámetros diferentes)
Código Java:
Ver original
  1. mifuncion( int a )
  2. mifuncion( String a )
- Sobrecarga de operadores. Aquí no estás sobre escribiendo nada ya que no hay herencia.
- La genericidad es también un tipo de polimorfismo.
- Algunos lenguajes soportan polimorfismo sin herencia. Ver duck typing
y tienes cosas un poco más "raras" como:
- Type classes de haskell

como ves el polimorfismo es un concepto q es implementado en diferentes lenguajes de formas muy distintas, mientras q la sobre escritura es solamente una de esas formas en q se implementa.

slds;

nup_
  #6 (permalink)  
Antiguo 16/04/2014, 16:51
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Cita:
Iniciado por nup_ Ver Mensaje
Hola:

De forma general se puede decir q el polimorfismo es la capacidad de, utilizando el mismo código, ejecutar operaciones en objetos de diferentes tipos.
En java la sobre escritura de métodos es una de las formas de crear polimorfismo.
Pero no es la única, ni java es el único lenguaje q soporta polimorfismo.

Ejemplos de polimorfismo (algunos soportados por java, otros no) también son:

- Sobrecarga de métodos (métodos de igual nombre pero con parámetros diferentes)
Código Java:
Ver original
  1. mifuncion( int a )
  2. mifuncion( String a )
- Sobrecarga de operadores. Aquí no estás sobre escribiendo nada ya que no hay herencia.
- La genericidad es también un tipo de polimorfismo.
- Algunos lenguajes soportan polimorfismo sin herencia. Ver duck typing
y tienes cosas un poco más "raras" como:
- Type classes de haskell

como ves el polimorfismo es un concepto q es implementado en diferentes lenguajes de formas muy distintas, mientras q la sobre escritura es solamente una de esas formas en q se implementa.

slds;

nup_
no te entendí muy bien
cuando usar la sobre escritura y cuando el polimorfismo

dar unos ejemplos sencillos con código mil gracias y disculpa
  #7 (permalink)  
Antiguo 16/04/2014, 16:52
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Van muy ligados, pero no es exactamente lo mismo. Sobreescribir un metodo es hacer una clase hija que tenga un método igual que el de la clase padre, pero con otro código. Con una clase hija que sobreescriba un método puedes usar o no polimorfismo.

El polimorfismo lo usas cuando metes una clase hija en una variable del tipo de la padre y llamas al método en cuestión. Aunque el tipo es de la clase padre, se llama al método de la clase hija.

La diferencia es la misma que entre escribir un método y llamarlo. Que sobreescribas un método no quiere decir que luego vayas a usarlo con polimorfismo después.

Se bueno.
me podrías dar unos ejemplito en código para que pudiera ayudar
para entender que es polimorfismo y sobre escritura de métodos
  #8 (permalink)  
Antiguo 16/04/2014, 21:26
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 4 meses
Puntos: 37
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

A mi entender, el polimorfismo se refiere a que puedes tener definido varias veces el mismo metodo pero con diferentes parametros de entrada, cada metodo aunque se llame igual puede hacer cosas completamente diferentes ya dentro del codigo, por ejemplo:

metodo: aplicarColor()

aplicarColor(objeto Vehiculo, nombre del color)
internamente el metodo colorea el vehiculo


aplicarColor(objeto Triangulo, borde, relleno, codigo de color)
internamente aplica el color a los bordes o lo rellena

aplicarColor(objeto texto)
le aplica un color a la letra seleccionada
  #9 (permalink)  
Antiguo 16/04/2014, 23:48
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Cita:
Iniciado por wwwmaster Ver Mensaje
A mi entender, el polimorfismo se refiere a que puedes tener definido varias veces el mismo metodo pero con diferentes parametros de entrada, cada metodo aunque se llame igual puede hacer cosas completamente diferentes ya dentro del codigo, por ejemplo:

metodo: aplicarColor()

aplicarColor(objeto Vehiculo, nombre del color)
internamente el metodo colorea el vehiculo


aplicarColor(objeto Triangulo, borde, relleno, codigo de color)
internamente aplica el color a los bordes o lo rellena

aplicarColor(objeto texto)
le aplica un color a la letra seleccionada
pero esto no es una sobre carga de metodos
  #10 (permalink)  
Antiguo 17/04/2014, 04:07
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Hola:

sobrecarga: en una misma clase, métodos con el mismo nombre y diferentes parámetros. No tiene nada que ver con pòlimorfismo ni sobreescritura.

sobreescribir: clase hija con exactamente el mismo método que su clase padre, aunque con código distinto.

polimorfismo. Usar la sobreescritura llamando a un método en una variable de tipo padre que realmente llama al metodo de la clase hija.

Código Java:
Ver original
  1. // clase padre con metodo()
  2. public class Padre {
  3.    public void metodo() {
  4.        System.out.println("Soy Padre");
  5.    }
  6. }
  7.  
  8. // Clase hija que sobreescribe metodo()
  9. public class Hija extends Padre {
  10.    @Override
  11.    public void metodo() {
  12.        System.out.println("Soy Hija");
  13.    }
  14. }
  15.  
  16. ...
  17.  
  18. // en algún sitio.
  19. // metodo() esta sobreescrito, pero no estamos usando polimorfismo en absoluto
  20. Hija hija = new Hija();
  21. hija.metodo();
  22.  
  23. // en otro sitio
  24. // Aquí sí usamos polimorfismo, puesto que la variable es de tipo Padre y guarda una instancia de Hija
  25. Padre padre = new Hija();
  26. padre.metodo(); // Se llama al metodo de Hija.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #11 (permalink)  
Antiguo 17/04/2014, 12:50
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

sobrecarga: en una misma clase, métodos con el mismo nombre y diferentes parámetros. No tiene nada que ver con pòlimorfismo ni sobreescritura.

sobreescribir: clase hija con exactamente el mismo método que su clase padre, aunque con código distinto.

polimorfismo. Usar la sobreescritura llamando a un método en una variable de tipo padre que realmente llama al metodo de la clase hija.

Código Java:
Ver original
  1. // clase padre con metodo()
  2. public class Padre {
  3.    public void metodo() {
  4.        System.out.println("Soy Padre");
  5.    }
  6. }
  7.  
  8. // Clase hija que sobreescribe metodo()
  9. public class Hija extends Padre {
  10.    @Override
  11.    public void metodo() {
  12.        System.out.println("Soy Hija");
  13.    }
  14. }
  15.  
  16. ...
  17.  
  18. // en algún sitio.
  19. // metodo() esta sobreescrito, pero no estamos usando polimorfismo en absoluto
  20. Hija hija = new Hija();
  21. hija.metodo();
  22.  
  23. // en otro sitio
  24. // Aquí sí usamos polimorfismo, puesto que la variable es de tipo Padre y guarda una instancia de Hija
  25. Padre padre = new Hija();
  26. padre.metodo(); // Se llama al metodo de Hija.

Se bueno.
no había visto un ejemplo tan genial como esto
  #12 (permalink)  
Antiguo 18/04/2014, 00:00
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 4 meses
Puntos: 37
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

En este articulo unen ambos conceptos: polimorfismo y sobrecarga:

http://apdaza-poo.blogspot.mx/2008/04/polimorfismo.html
  #13 (permalink)  
Antiguo 18/04/2014, 01:30
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Cita:
Iniciado por wwwmaster Ver Mensaje
En este articulo unen ambos conceptos: polimorfismo y sobrecarga:

http://apdaza-poo.blogspot.mx/2008/04/polimorfismo.html
una observación no pregunte por sobrecarga sino por sobre escritura y polimorfismo
aunque esta genial mil gracias
  #14 (permalink)  
Antiguo 07/05/2014, 00:06
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Cita:
Iniciado por jor_0203 Ver Mensaje
no había visto un ejemplo tan genial como esto
una pregunta es cierto que el polimorfismo se puede establecer mediante la sobrecarga, sobre-escritura y la ligadura dinámica ya que dicen que
polimorfismo es diferente a sobre carga etc
  #15 (permalink)  
Antiguo 08/05/2014, 13:27
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

Tengo entendido que Java no soporta la sobrecarga de operadores.

Última edición por juanbimbaperez; 08/05/2014 a las 15:12
  #16 (permalink)  
Antiguo 08/05/2014, 16:57
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

class Abuela{

void queEres(){
System.out.println("Soy Madre");
}
}

class Madre extends Abuela{

void queEres(){
System.out.println("Soy hija y");
super.queEres();
}
}

class Hija extends Madre{

void queEres(){
System.out.println("Soy hija");
}
}

class Padre{

void queEres(){
System.out.println("Soy Padre");
}
}

En algún otro sitio...

Abuela Alice = new Abuela();
Madre Mirian = new Madre();
Hija Alicia = new Hija();
Padre Bob = new Padre();

System.out.println("Alice:");
Alice.queEres();

System.out.println("Mirian:");
Mirian.queEres();

System.out.println("Alicia:");
Alicia.queEres();

System.out.println("Bob:");
Bob.queEres();


El método (queEres) se comporta de múltiples formas, por tanto se ha implementado el polimorfismo a través de la sobre escritura de los métodos.

Por tanto regresando a la pregunta original. No puede haber diferencias entre ambos pues a través de uno se implementa el otro. Es decir el polimorfismo puede lograr mediante la sobre escritura de los métodos. Y como ya se dijo también mediante interfaces.

Noten que aquí la clase Padre no guarda una relación de parentesco de forma explicita con las clases Abuela, Madre e Hija.

Claro que pude haber escrito:

Abuela Alice = new Abuela();
Abuela Mirian = new Madre();
Abuela Alicia = new Hija();
Padre Bob = new Padre();

System.out.println("Alice:");
Alice.queEres();

System.out.println("Mirian:");
Mirian.queEres();

System.out.println("Alicia:");
Alicia.queEres();

System.out.println("Bob:");
Bob.queEres();

De acuerdo a Wikipedia "El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía."

Que me dicen.

Última edición por juanbimbaperez; 08/05/2014 a las 20:25

Etiquetas: diferencia, escritura
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:54.