Qual è la differenza tra dichiarazione di classe e definizione di classe in Java?
Qui la definizione significa generalmente la descrizione delle caratteristiche/comportamenti futuri con i dettagli.
La dichiarazione viene usata nei casi in cui la cosa di quel tipo viene creata - quando inizia ad esistere (tangibile nel mondo del computer al tempo di esecuzione; cioè occupa un po' di memoria da ora). Il termine si usa per le variabili, e significa fondamentalmente che si dice di che tipo è la variabile. Da questo punto di vista, la dichiarazione di una classe non ha senso per una classe se pensiamo alla classe come a una descrizione dettagliata.
Aggiornamento: La parte superiore è una visione, semplice - rispetto alla terminologia dei vecchi linguaggi (come Pascal), da un punto di vista più astratto.
Tuttavia, il linguaggio C ha iniziato a usare i termini un po' diversamente. Ha separato le informazioni relative all'esistenza = la definizione a un tipo di file sorgente - i file di intestazione (*.h) dalle informazioni sui dettagli di implementazione = la dichiarazione - i file di implementazione (*.c). I dettagli (la dichiarazione) sono necessari per compilare la descrizione in binario, le informazioni astratte (la definizione) dicono solo che un certo tipo/funzione/qualcosa come questo è dichiarato altrove.
Quando si arriva al C++ l'approccio C alla separazione in file di intestazione/implementazione è conservato. Da quel punto di vista, la definizione di una classe dice solo qual è il nome della classe, quali sono le variabili membro, e quali sono i prototipi dei metodi (come le funzioni membro sono chiamate, e quali parametri di quali tipi si aspettano). La dichiarazione contiene i corpi dei metodi, il modo in cui le variabili membro sono inizializzate, ecc.
Ma ci sono anche altri linguaggi dove i termini possono suonare diversamente. Pensate ai linguaggi OO, dove la classe è rappresentata da un'istanza, il prototipo, il modello che viene usato per creare altri oggetti di quel tipo. Allora il termine classe in sé può essere più astratto - può mancare un'introduzione/descrizione formale in un codice sorgente. Poi i termini dichiarazione/definizione...
La terminologia introduce i termini - le abbreviazioni delle idee. Ciò che è più importante imparare è costruire la propria immaginazione, vedere cosa c'è dietro i termini. Poi si usano i termini solo per essere in grado di comunicare con gli altri - per confrontare le proprie immagini interiori della soluzione con le loro.