Hier ist ein Code ohne param KonstruktorNo Param und Standardkonstruktoren Verwirrung
public class misc2 {
misc2(String x){
}
public static void main(String ... args){
misc2 m = new misc2(); // this throws a compilation error
}
}
Meine Frage ist warum es einen Übersetzungsfehler werfen, wenn Java automatisch ein Standard-Konstruktor erstellt, in diesem Fall MISC2() { ...}. wenn es nicht bereits definiert ist.
Auch jetzt, wenn ich einen No-Param-Konstruktor misc2() {...} hinzufügen, die tatsächlich von der JVM aufgerufen wird. Ist es der Standardparameter oder der Nein-Parameter? Die zweite Frage ist, dass, wenn Java bereits einen Standardkonstruktor ohne Parameter erstellt, die Notwendigkeit besteht, in einigen Fällen im Java-Programm explizit einen Konstruktor zu erstellen.
Okay, auch, da Java eine IFF Standardkonstruktor erstellt es keine definiert ist, warum dann nicht derjenige mit params definiert einen Fehler aus, , weil wir, wie in dem Code, in diesem Fall keinen Konstruktor definiert haben, also muss Java ein Standard-itrelf erstellen und keinen Fehler werfen. Ich meine Standard und parametrisiert sind völlig getrennt. Warum dann das Verhalten? –
@BishwaroopChakraborty Ihr Fehler tritt auf, weil Sie versuchen, die Klasse mit Nicht-Argumenten zu konstruieren. 'new misc2()' hat keine Argumente, aber da Sie einen Konstruktor definiert haben, der eine 'String' übernimmt, müssen Sie diese verwenden. Etwas wie 'new misc2 (" hallo ") wird funktionieren. Sie können auch Ihren eigenen Konstruktor ohne Argumente definieren, wenn Sie möchten. – Kon