2016-07-27 2 views
-4
class add{ 

add(){ 
    int a=0; 
    int b=0; 
} 
void display() 
{ int s; 
    s=a+b; 
    System.out.println(s); 
} 
} 
class main{ 
     public static void main(String arg[]) 
     { 
      add so=new add(); 
      so.display(); 
      } 

} 

Wenn ich laufe es zeigt, dass a, b sind nicht definiert, während s definiert ist. Der Standardkonstruktor wird nicht aufgerufen, während die display() -Funktion ordnungsgemäß funktioniert.Konstruktor wird nicht aufgerufen, wenn i obj Variablen erstellen

+1

Weil 'a' und' b' Variablen sind, die lokal für den Konstruktor sind und daher nicht von 'display()' aus aufgerufen werden können. – TheLostMind

+0

'a' und' b' sind lokale Variablen im Konstruktor. Sie werden entfernt, wenn der Konstruktor fertig ist. – RamenChef

+0

Wie können Sie das überhaupt ausführen? Dies sollte nicht einmal kompilieren. – David

Antwort

1

Ihr Code funktioniert nicht, da a und b lokale Variablen für den Konstruktor sind. Sie können also nicht außerhalb des Konstruktors aufgerufen werden.

Verwenden Sie den folgenden Code, um Ihr Problem zu lösen.

class Main{ 
    public static void main(String[] args) 
    { 
     Add so=new Add(); 
     so.display(); 
    } 
} 

class Add{ 
    int a, b; 

    Add(){ 
     a=0; 
     b=0; 
    } 

    void display() 
    { 
     int s; 
     s=a+b; 
     System.out.println(s); 
    } 
} 

Und verwenden Sie die Java-Namenskonventionen für Klassennamen.

0
class add{ 
int a; 
int b; 

add(){ 

} 
void display() 
{ int s; 
    s=a+b; 
    System.out.println(s); 
} 
} 
class main{ 
     public static void main(String arg[]) 
     { 
      add so=new add(); 
      so.display(); 
      } 

Tun Sie dies wie folgt. Machen Sie ein und b zugänglich für Anzeige-Methode. a und b wird beim Aufruf des Konstruktors automatisch auf initialisiert.
Was Sie tun, ist die Deklaration ein und b innerhalb Konstruktor. Also ihr Bereich wird bis zum Konstruktor sein.

+1

Wenn Sie ein Beispiel als Antwort geben, folgen Sie bitte den Namenskonventionen. – eldo

+0

Ich habe das nicht selbst geschrieben. Ich habe gerade die Hauptsache korrigiert. @ Eldo – Arrow

+0

und ich habe dich korrigiert – eldo

Verwandte Themen