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.