L'omonima classe di java [duplicato]

-2

Ogni codice Java avrà sempre una classe che ha lo stesso nome di quella del file. L'intero programma progettato risiede in questa classe. Tuttavia, in C ++ non abbiamo questa disposizione. Qual è la logica dietro questo approccio in cui l'intero codice risiede all'interno di una classe? Quale ulteriore vantaggio offre? Possiamo creare oggetti di questa classe e chiamare la funzione principale di questa classe quante volte vogliamo?

    
posta Mikhail Tal 03.11.2015 - 19:43
fonte

1 risposta

2

Domanda 1:

What is the rationale behind this approach where the whole code resides inside a class? What extra advantage does this provide?

Collegherò allo stesso link che gnat ha fornito come un possibile duplicato perché penso che fornisca alcune informazioni utili. Essendo il fatto che avere ogni classe pubblica in un proprio file consente una compilazione più veloce.

Inoltre, uno dei vantaggi pratici del modo in cui Java fa le cose è che possiamo effettivamente avere più% funzioni di% di scambio. Di fatto, tutte le tue classi potrebbero avere una funzione main . In genere, hai sempre una sola funzione main in un determinato progetto, ma ho visto funzioni principali alternative utilizzate per:

  • Unità di unità / test di integrazione / regressione

  • Crea una versione del programma con un set di funzionalità limitato (potrebbe essere utile quando si imposta una 'demo'?)

Domanda 2:

Can we create objects of this class and call the main function of this class as many times as we wish?

Tecnicamente, sì, puoi. Diciamo che abbiamo:

public class Foo
{
    public static void main(String[] args) {}
}

Possiamo quindi creare oggetti di tipo main . Possiamo inoltre chiamare Foo da tale oggetto:

Foo obj = new Foo();
obj.main(null);

Tuttavia, in genere non lo fai in Java. main è una funzione main , il che significa che non è necessario un oggetto per chiamarlo. Sarebbe altrettanto valido chiamare static . Nel precedente Foo.main(null); , l'oggetto obj.main(null); viene essenzialmente ignorato. Il compilatore Java, di default, dovrebbe darti un avvertimento su come fare in questo modo:

The static method main(String[]) from the type Foo should be accessed in a static way.

Che di nuovo, ti sta solo dicendo di rilasciare l'oggetto e di usare la classe per chiamare il metodo statico.

Tuttavia, per rispondere alla tua domanda: puoi chiamare la funzione principale statica tutte le volte che vuoi, proprio come qualsiasi altro metodo statico. Ricorda che non stai chiamando il metodo principale statico dell'oggetto , stai chiamando il metodo principale statico - perché gli oggetti non hanno metodi statici, le classi hanno statico metodi.

    
risposta data 03.11.2015 - 20:28
fonte

Leggi altre domande sui tag