2013-04-13 16 views
5

Perché dovresti mai avere un costruttore della tua classe che contenga lo public static void main (String[] args){}?Perché avere un costruttore e un metodo principale nella stessa classe

Perché non utilizzare una classe separata con il costruttore e creare un'istanza?

+1

Un costruttore non può contenere un metodo. Intendi sia il costruttore che il metodo principale in una ** classe **? –

+0

Sì, in una classe – Bob

risposta

12

Il metodo main() è il punto di ingresso per qualsiasi programma in java. Questo è il metodo che viene invocato da JVM per eseguire il programma.

Ogni classe incluse le classi astratte ha un costruttore. Anche se non lo dichiari esplicitamente, il compilatore aggiungerà un costruttore predefinito. Il metodo main() deve appartenere a una classe pubblica (che avrà sempre un costruttore). Sì, generalmente è preferibile progettare un'altra classe che abbia tutta la logica di programmazione e solo istanziare questa classe nella classe principale, cioè quella con il metodo main() in essa.

Ma è anche possibile avere una classe con metodo principale che crea oggetto della propria classe (poiché non è possibile accedere ai membri dell'istanza dai metodi statici).

+0

hai ragione. vedi ad esempio ['new SampleMain() .doMain (args);'] (https://raw.githubusercontent.com/kohsuke/args4j/args4j-2.0.16/args4j/examples/SampleMain.java) – vault

4

Il metodo public static void main(String[] args) non crea un'istanza della classe. Ma il costruttore lo fa.

Avere il metodo main(String[]) in diverse classi aiuta a testare la funzionalità di una particolare classe in una grande applicazione.

+3

Avendo 'JUnit 'o altri test unitari aiutano a testare la funzionalità di una particolare classe. I punti di ingresso test 'spuri' principali per lo più aiutano a testare la pazienza dei colleghi abbastanza sciocchi da disturbarli a gestirli. –

+1

JUnit non può coprire tutte le situazioni quando è necessario testare le vostre applicazioni. –

1

Mentre io non credo che questo sarà costruttivo ...

Alcuni programmatori preferiscono inserire un programma di main "test" all'interno della classe stessa per costruire e utilizzare. Alcuni professori amano essere finti-OOP costruendo un oggetto e facendolo fare il lavoro.

... non sono modelli forti degni di emulazione secondo la mia personale opinione.

3

I costruttori e il metodo main hanno due scopi diversi.

Costruttori permettono creazione di istanze di una determinata classe, mentre il metodo main consente solo per un potenziale punto di ingresso per l'avvio del programma.

Inoltre è possibile avere più costruttori per una determinata classe (accettando zero o più parametri), ma solo un metodo principale (in una determinata classe).

La principale differenza è il mio primo punto: servono a scopi diversi. Uno è un punto di ingresso per avviare un programma, l'altro è esplicitamente lì per consentire la creazione di istanze di una classe.

Problemi correlati