2013-06-05 24 views
6

Ho il seguente codice come parte di un incaricoJava classe che estende contenente metodo main

class Base { 
    public static void main(String[] args){ 
    System.out.println("Hello World"); 
    } 
} 

public class Factorial extends Base{ 


} 

Il mio compito è eseguire il codice e poi spiegare il nome output.The del file è Factorial.java. Il codice funziona senza problemi e viene stampato Hello World, che per me è sorprendente. Prima di digitare il codice, pensavo che non sarebbe stato compilato perché la classe genitore, che è stata estesa, dovrebbe essere in un altro file, ma ora non ne sono così sicuro. Gradirei chiari chiarimenti.

+1

Compiti? Comunque, niente di strano qui. Perché sei confuso? –

+2

Non capisco, intendi che 'Factorial' è nello stesso file di' Base'? Come "esegui il codice"? – fge

+1

Quindi il comando che usi per eseguirlo è "java Factorial"? –

risposta

12

Java consente di definire più classi all'interno di un singolo .java file con la condizione che si può avere al massimo uno public classe ed se lo fai poi il nome di quella classe pubblica deve corrispondere al nome di il file .java. Nel tuo caso, la classe dichiarata public è Factorial e quindi il tuo nome file deve essere Factorial.java.

Il eredità sta lavorando come al solito qui e il public static void main() viene ereditato da Factorial ed è per questo che si vede l'output in esecuzione java Factorial.

1

È possibile avere più di una classe nello stesso file, ma solo una pubblica, poiché Base non è una classe pubblica, ma non è una pratica consigliata.

+0

E ho ragione nel ritenere che dal momento che l'estensione la classe eredita la funzione principale dalla classe genitore, viene eseguita non appena il programma viene eseguito? – user1107888

+0

@ user1107888 sì, poiché 'Factorial' estende' Base' eredita anche il metodo principale. –

+1

@ user1107888 il metodo 'main' è statico; è associato alla classe stessa. Poiché "Fattoriale" estende "Base" e "Fattoriale" non definisce "principale", il "principale" "visto" di "Fattoriale" è quello di "base". – fge

Problemi correlati