2013-09-25 1 views
9

Desidero eseguire più funzioni di costruzione durante la creazione di un singolo oggetto. Per esempio, ho una definizione di classe come questo-Come eseguire il costruttore multiplo, durante la creazione di un singolo oggetto

public class Prg 
{ 
    public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     System.out.println("In multiple parameter constructor"); 
    } 
} 

E io sto cercando di raggiungerlo dal seguente codice -

public class Prg 
{ 
    public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     Prg(); 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     Prg(b); 
     System.out.println("In multiple parameter constructor"); 
    } 
    public static void main(String s[]) 
    { 
     Prg obj = new Prg(10, 20); 
    } 
} 

Ma in questo caso si sta generando errori come -

Prg.java:11: error: cannot find symbol 
      Prg(); 
      ^
    symbol: method Prg() 
    location: class Prg 
Prg.java:16: error: cannot find symbol 
      Prg(b); 
      ^
    symbol: method Prg(int) 
    location: class Prg 
2 errors 

Grazie

+0

questo articolo può essere utile anche: http: //www.yegor256. com/2015/05/28/one-primary-constructor.html – yegor256

risposta

12

Uso this() invece di Prg() nei tuoi costruttori

+1

Oh, grazie. Stavo cercando parole chiave come super, per indicare la stessa classe. Ma non l'ho provato. Ora sta funzionando. – CodeCrypt

2

Quando si chiama altri costruttori Utilizzare this() invece di Prg()

3

Si dovrebbe usare this dichiarazione.

ad es.

public Prg(int b, int c) 
{ 
    this(b); 
    System.out.println("In multiple parameter constructor"); 
} 
5

Uso this invece di Prg

public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     this(); 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     this(b); 
     System.out.println("In multiple parameter constructor"); 
    } 
3

uso this keyword.Full esecuzione di codice è il seguente

public class Prg 
{ 
    public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     this(); 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     //Prg obj = new Prg(10, 20); 

this(b);  System.out.println("In multiple parameter constructor"); 
    } 
    public static void main(String s[]) 
    { 
     Prg obj = new Prg(10, 20); 
    } 
}