Wenn Sie ein Objekt über das Codewort new
instanziieren, wird Speicherplatz auf dem Heap (der Teil des Systemspeichers, der zum Speichern von Objekten und deren Feldern verwendet wird) zugewiesen und der Konstruktor wird ausgeführt. In diesem Fall schreibt der Konstruktor in die Standardausgabe, und dies wird unabhängig davon ausgeführt, ob eine Referenz für das Objekt erstellt wurde oder nicht.
Danach haben Sie Recht, auf das Objekt kann nicht zugegriffen werden, da keine Referenzen darauf existieren. Daher gibt der Garbage Collector schließlich den Speicherplatz frei.
Genau wie Adam gesagt hat, wird dies im Allgemeinen jedoch davon abgeraten, da es Ihre Erwartung zunichte macht, dass ein Konstruktor das Objekt initialisieren sollte, und Interaktionen mit der Außenwelt sollten über seine Methoden möglich sein.
Also, auch wenn es ein bisschen länger, besser strukturierter Code zum Beispiel wie folgt aussehen könnte:
class TestCode {
public TestCode() {}
public void welcome() {
System.out.println();
System.out.println("Welcome to the Program");
}
public static void main(String args[]){
TestCode tc = new TestCode();
tc.welcome();
}
}
P. S. Natürlich gibt es Fälle, in denen Sie bei jeder Instantiierung Operationen außerhalb der Instanz ausführen möchten, wie zum Beispiel das Speichern einer statischen Liste aller Instanzen der Klasse und daher das Hinzufügen der jeweiligen Instanz bei jeder Instanz. Aber selbst dann ist es wahrscheinlich am besten, eine private init() -Methode zu erstellen und sie vom Konstruktor aus aufzurufen, um Elemente mit unterschiedlichen Funktionen besser zu trennen.
Als weiteres Beispiel, hier ist eine andere, funktional gleiche Art und Weise Ihres Code neu formuliert werden:
class TestCode {
public TestCode() {
init();
}
private void init() {
System.out.println();
System.out.println("Welcome to the Program");
}
public static void main(String args[]){
TestCode tc = new TestCode();
// Or simply: new TestCode();
}
}
https://stackoverflow.com/questions/46396647/what-is-calling-class-method- on-constructor –
* Also wie kann es bezeichnet werden? * Es kann nicht. Dafür gibt es Variablen. – shmosel
Überprüfen Sie diese https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html –