Sto facendo fatica a comprendere appieno l'uso dei costruttori in Java.
Quello che ho imparato finora sui costruttori è il seguente:
- stesso nome della classe
- abbreviation ctor
- sovraccarico
- nessun tipo di ritorno
- crea un oggetto di una classe
- ogni classe ha un costruttore predefinito
Quando per esempio una stringa deve essere restituita da una classe che deve essere chiamata, allora può essere creato un metodo, cioè un costruttore non sarà sufficiente in quanto ciò non restituirà nulla.
Tentativo di rispondere alla domanda
Per spiegare cosa intendo, ho creato una classe con due costruttori e due metodi che restituiscono una stringa.
public class HelloWorldConstructor {
public HelloWorldConstructor() { }
public HelloWorldConstructor(String a) {
saySomething(a);
}
public HelloWorldConstructor(String a, String b) {
saySomething(a, b);
}
void saySomething(String a) {
System.out.println(a);
}
void saySomething(String a, String b) {
System.out.println(a + ", " + b);
}
}
Opzione 1
È possibile restituire una stringa chiamando il metodo che risiede nella classe.
public class CallConstructor {
public static void main(String[] args) {
HelloWorldConstructor hwc = new HelloWorldConstructor();
hwc.saySomething("allo");
hwc.saySomething("allo", "allo");
}
}
restituisce:
allo
allo, allo
Opzione 2
È anche possibile restituire una stringa chiamando direttamente il costruttore.
public class CallConstructor2 {
public static void main(String[] args) {
new HelloWorldConstructor("allo");
new HelloWorldConstructor("allo", "allo");
}
}
restituisce lo stesso dell'opzione 1.
Discussione
Quando viene scelta l'opzione 2, è necessario creare due oggetti invece di uno come illustrato dall'opzione 1, ma quando scegliere l'opzione 2 e l'opzione 1? In questo caso, penso che sia meglio scegliere l'opzione 1 quando verrà creato un oggetto, ma l'opzione 2 potrebbe essere adatta quando altre circostanze sono applicabili.
The constructor in the example just gives an initial value to class members.
Constructors are used to initialize the instances of your classes. You use a constructor to create new objects often with parameters specifying the initial state or other important information about the object
Dopo aver letto di teoria e Q & Per quanto riguarda i costruttori, sto lottando per comprenderli appieno. So come chiamare un costruttore e come chiamare un metodo, ma non riesco a razionalizzare questo.
- Un costruttore deve essere chiamato direttamente quando ...
- L'overloading del costruttore verrà eseguito quando ...
- I metodi verranno chiamati direttamente chiamando il costruttore predefinito quando ...