2017-11-20 4 views
0

Ich verstehe nicht, warum Standardkonstruktor nach parametrisierten Konstruktor in diesem Programm ausgeführt wird?Warum gibt dieses Schlüsselwort im Konstruktor ein anderes Ergebnis?

class A{ 
    int a , b; 

    A(){ 
    this(10,20); 
    System.out.println("Inside Default Constructor values:"+a+" "+b); 
    } 

    A(int a , int b){ 
    this.a=a; 
    this.b=b; 
    System.out.println("Inside Parameterized Constructor values:"+a+" "+b); 
    } 
} 

public class thisExample { 
    public static void main(String[] args) { 
    A obj = new A(); 
    } 
} 

Dies gibt Ausgang als:

Inside Parameterized Constructor values:10 20 
Inside Default Constructor values:10 20 
+0

ist es nicht. Sie loggen nur nach parametrierter Ausführung ein. tatsächlich parametrisiert wird innerhalb des Standards ausgeführt – pirho

+3

Was denkst du 'this (10,20);' tut? –

+1

Das sieht nach einer * großartigen * Möglichkeit aus, einen Debugger zu verwenden, um den Code Zeile für Zeile durchzugehen und zu beobachten, wie er sich verhält. Sie werden feststellen, dass jede Anweisung in der Reihenfolge ausgeführt wird, in der sie aufgerufen wird. – David

Antwort

0

Die erste Anweisung im Standardkonstruktors das parametrisierte Konstruktor ausgeführt wird. Sie können den Sysout vor dem Ausführen des Vorgangs (10, 20) einbeziehen und das Verhalten überprüfen.

1

Sein aus dem Code klar, warum es passiert

A obj = new A(); 

ruft Ihr Standardkonstruktors

A(){ 
    this(10,20); 
    System.out.println("Inside Default Constructor values:"+a+" "+b); 
} 

die weitere Anrufe bei Ihnen parametrisierte Konstruktor erste this(10,20); so Ihren Code druckt Inside Parameterized Constructor values:10 20 erste und als er druckt Inside Default Constructor values:10 20

Verwandte Themen