2016-09-25 4 views
1

Das Programm zeigt den Ausgang für nur "A" -Klasse, die 10 ist. Aber warum geht das Programm nicht in die Klasse "B", deren Antwort sollte 12 sein?Warum läuft mein Programm nicht in die nächste Klasse?

interface ConstInterface { 
    int MAX=10; 
} 

public class A implements ConstInterface { 

    public static void main(String[] args) { 
     System.out.println(MAX); 
    } 
} 

class B { 
    int MAX=12; 
    void maxNew(){ 
     System.out.println(MAX); 
     B obj = new B(); 
     obj.maxNew(); 
    } 
} 
+2

Die eigentliche Frage ist: Warum sollte es Ihrer Meinung nach so aussehen? – Seelenvirtuose

+0

@Seelenvirtuose Du hast Recht. Ich verstehe, dass das Programm endet, wenn main() zurückkehrt. Vielen Dank! –

Antwort

1

Ihr Programm endet, wenn main() zurückkehrt. Sie haben keinen Code in main(), der irgendetwas in der Klasse B aufruft. Deshalb "geht das Programm nicht weiter".

Sie können dies, indem ändern die beiden Linien

B obj = new B(); 
obj.maxNew(); 

aus dem maxNew() Verfahren in B und sie innerhalb main() setzen:

public static void main(String[] args) { 
    System.out.println(MAX); 
    B obj = new B(); 
    obj.maxNew(); 
} 
0

In Java für Standalone-Anwendung den Ausgangspunkt der Ausführung ist öffentliche Hauptmethode in einer Klasse, die in Ihrem Fall Klasse A ist.

Um auch e xecute maxNeu von Klasse B sollten Sie in der Hauptmethode das Objekt von B erstellen und die maxNew-Methode aufrufen.

Versuchen modifizierte Code unten:

interface ConstInterface { 
    int MAX=10; 
} 

public class A implements ConstInterface { 

public static void main(String[] args) { 
    System.out.println(MAX); 
    B b = new B(); 
    b.newMax(); 
    } 
} 

class B { 
int MAX=12; 
void maxNew(){ 
System.out.println(MAX); 
    } 
} 
0

Die Lektion hier: Computer genau tun, was Sie ihnen sagen, zu tun. Für Java-Programme, die durch den Inhalt der Haupt Methode bestimmt wird. Und Ihr Haupt enthält nichts, was Ihre B Klasse nutzen würde.

Verwandte Themen