Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/07/2010, 11:44
luisetto
 
Fecha de Ingreso: marzo-2005
Mensajes: 28
Antigüedad: 19 años, 11 meses
Puntos: 0
Duda con constructor que llama a otro constructor

Buenas, estoy iniciandome en la programación con java y no entiendo por que estos dos programas que les adjunto no son equivalentes. La duda es la forma de llamar a un constructor dentro de otro constructor.
Creo que debo de tener alguna duda de concepto. Les agradecería que le dieran un vistazo y me expliquen que es lo ocurre.

Gracias por su tiempo.


Código PHP:
// Prueba.java
class Prueba{
        
int x=0;
        
String y="valor por defecto";

    
Prueba (int xString y){
        
this.x=x;
        
this.y=y;
        
System.out.println ("Estamos en el primer constructor");
    }

    
Prueba (int x){
        
this (x,"valor arbritrario"); //Esta es la parte que cambia
        
System.out.println ("Estamos en el segundo constructor");
    }

public static 
void main(String[]args){
    
Prueba prb=new Prueba ("nuevo valor");
    
System.out.println("Primer constructor: " prb." y " prb."\n");

    
Prueba prb2=new Prueba (10);
    
System.out.println("Segundo constructor: " prb2." y " prb2.y);
    }
}
/*Devuelve:
*Estamos en el primer constructor
*Primer constructor: 5 y nuevo valor
*
*Estamos en el primer constructor
*Estamos en el segundo constructor
*Segundo constructor: 10 y valor arbritrario  
 
 Como pueden ver en la última línea esta programa SI hace lo que quiero*/ 



Código PHP:
// Prueba.java
class Prueba{
        
int x=0;
        
String y="valor por defecto";

    
Prueba (int xString y){
        
this.x=x;
        
this.y=y;
        
System.out.println ("Estamos en el primer constructor");
    }

    
Prueba (int x){
        new 
Prueba (x,"valor arbritrario"); //Esta es la parte que cambia
        
System.out.println ("Estamos en el segundo constructor");
    }

public static 
void main(String[]args){
    
Prueba prb=new Prueba ("nuevo valor");
    
System.out.println("Primer constructor: " prb." y " prb."\n");

    
Prueba prb2=new Prueba (10);
    
System.out.println("Segundo constructor: " prb2." y " prb2.y);
    }
}
/*Devuelve:
*Estamos en el primer constructor
*Primer constructor: 5 y nuevo valor
*
*Estamos en el primer constructor
*Estamos en el segundo constructor
*Segundo constructor: 0 y valor por defecto 

Como pueden ver en la última línea esta programa NO hace lo que quiero*/