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

Duda de concepto con herencia en clase Number

Estas en el tema de Duda de concepto con herencia en clase Number en el foro de Java en Foros del Web. Hola a todos, tengo una duda de conceptos sobre herencia y polimorfismo que me es complicada de entender. Quiero crear una clase que acepte cualquier ...
  #1 (permalink)  
Antiguo 19/03/2010, 15:53
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Información Duda de concepto con herencia en clase Number

Hola a todos, tengo una duda de conceptos sobre herencia y polimorfismo que me es complicada de entender.

Quiero crear una clase que acepte cualquier tipo de numero entero y guarde el valor en una variable de tipo BigInteger.

Código:
public class Numero {

	private BigInteger valor;

        public Numero( Number n ) {
		valor=new BigInteger( n.toString() );
	}

	@Override
	public String toString() {
		return this.valor.toString();
	}
...
Si hago...

Código:
int b=100;
Numero n=new Numero( b );
Eso guarda el valor de b en el BigInteger correctamente, pero no entiendo el mecanismo de lo que ocurre. El toString() del constructor de donde sacó el "100"?. Si el parametro Number n se convierte a int n, y hago n.toString() estaré invocando al toString() de la clase Number, ya que int no tiene.. Y si es el de la clase Number....

...cómo sabe este método el valor del int???.


Esta bien esa sentencia asi?, otra forma de hacerlo mejor?.

Gracias.
  #2 (permalink)  
Antiguo 20/03/2010, 01:09
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Duda de concepto con herencia en clase Number

Hola:

Como bien dices, int no tiene toString(), así que no se está llamando a ningún toString() de int. Esto te daría error

int b;
b = new Numero(100);
b.toString(); // error

El compilador de java, cuando necesita hacer la asignacion b = new Numero(100), lo hace llamando al método b = new Numero(100).intValue(), así que el int b es un int normalito, independientemente de qué new hagas.

Otro tema es que hay determinados métodos de otras clases que saben convertir ese entero a String para hacer algo con él, por ejemplo

System.out.println(44);

no llama a 44.toString(), que no existe, sino que internamente llama al método estático de la clase Integer.toString(44)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 20/03/2010, 09:49
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Duda de concepto con herencia en clase Number

La respuesta es el autoboxing de Java en las últimas versiones, ya que te está conviertiendo automáticamente el int en un Number. En mi opinión, introducir el autoboxing no fue una buena idea, por que lleva a confusiones como esta.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: clase, concepto, herencia, number
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 22:46.