Campi classe
L'essenza della programmazione orientata agli oggetti è rappresentare il programma come un'interazione di oggetti.
 
Un oggetto è una sorta di entità con determinate proprietà e determinate operazioni su di esso.

Gli oggetti sono stati originariamente creati per simulare la realtà: molte cose intorno a noi possono essere rappresentate come un oggetto. Ad esempio, un libro che hai letto di recente può essere considerato come un oggetto con le proprietà 'nome', 'autore', 'età', 'testo del libro', 'numero di pagine', ecc. può eseguire operazioni come "leggere un libro", "masterizzare un libro", ecc.
Nella terminologia del linguaggio di programmazione Java, queste "proprietà" sono chiamati campi e le operazioni sugli oggetti sono chiamate metodi.
Poiché Java è un linguaggio tipizzato staticamente, qualsiasi oggetto deve essere creato secondo uno schema. In Java, tali modelli sono classi. La classedescrive quali campi può avere un certo tipo di oggetto e quali operazioni sono definite su di esso.
La differenza tra classe e oggetto è analoga alla differenza tra "auto" e "Toyota Camry, parcheggiata alla quinta casa di Cheburekovo Street".

Considera la procedura per creare la tua classe di oggetti con campi in Java. libro di classe { nomestringa; String nomeautore; int etàRequisito; Stringtext; int pageCount; } Questo codice crea la classe"Libro". oggettidi classe «Libro» ci sono due proprietà intere (denominate «ageRequirement» e «pageCount») e tre proprietà di tipo «String» (con i nomi "name", "authorName" e "text".
La sintassi generale per la creazione di una classe con i campi è la seguente.
  classe <nome della classe> { <primo tipo di proprietà> <nome della prima proprietà> <secondo tipo di proprietà> <secondo nome di proprietà> &helli; <tipo di ultima proprietà> <cognome nome proprietà> }

Naturalmente, in Java, puoi creare classi non solo in questo modo (ci sono anche metodi, modificatori di accesso e molto altro), ma ne parleremo più avanti.

Metodi di classe
Le operazioni sugli oggetti in Java sono chiamate metodi. I metodi sono come le funzioni matematiche: possono accettare argomenti e restituire un valore. D'altra parte, anche i metodi in Java hanno accesso a tutti i campi di un oggetto.

Per creare un metodo in una classe, devi includerlo nella classe. Ad esempio, possiamo definire un metodo print(age) che stamperà informazioni sul nostro libro e visualizzerà un avviso se l'utente non è ancora abbastanza grande per quel libro.

    lezione Prenota
    {
        Nome stringa;
        Stringa nomeautore;
        int ageRequirement;
        Stringa di testo;
        int pageCount;
        // crea un metodo di stampa
        vuoto stampa(int età)
        {
            Sistema.fuori.< span style="color:#7d9029">println("Nome: " +nome);
            Sistema.fuori.< span style="color:#7d9029">println("Autore: " +nomeautore);
            Sistema.fuori.< span style="color:#7d9029">println("Numero di pagine: "+Intero.aStringa(etàRequisito);
            // il codice di verifica va qui
        }
    }
 
Analizziamo la sintassi per la creazione di un metodo.
1) La prima riga di un metodo è la sua firma.
2) Il tipo restituito del metodo viene scritto per primo. Il nostro metodo non restituisce alcun valore, quindi scriviamo void.
3) Poi nella firma c'è il nome del metodo (print).
4) Tra parentesi c'è un elenco di argomenti. Gli argomenti sono separati da virgole. Per ogni argomento vengono specificati il ​​tipo e il nome, separati da uno spazio. Nel nostro caso, c'è un solo argomento, ha il tipo int e il nome age, quindi non ci sono virgole.
5) Dopo di che arriva il codice del metodo tra parentesi graffe. Per restituire un valore da un metodo, scrivi return <value>;. Nell'esempio, il metodo non restituisce nulla, quindi return può essere omesso. Per terminare prematuramente l'esecuzione di un metodo, puoi scrivere return;.
6) Nella classe stessa, possiamo fare riferimento ai campi dell'oggetto di questa classe per nome.

Modificatori di accesso
Per impostazione predefinita, tutti i campi e i metodi di una classe in Java sono privati. Ciò significa che nessuno può accedervi, il che significa che al di fuori degli oggetti di questa classe, nessun metodo può utilizzare i campi e i metodi degli oggetti di questa classe.

Campi e metodi possono essere resi pubblici con il modificatore di accesso public. C'è anche un modificatore private che rende privato il campo. È facoltativo in quanto tutti i campi e i metodi sono privati ​​per impostazione predefinita. Ecco un esempio di utilizzo dei modificatori public  e private. libro di classe { public Stringname; String nomeautore; private int ageRequirement; Stringtext; public int pageCount; int getTextLength() { restituisce la lunghezza del testo(); } public int getMediaLetterCount() { return getTextLength() / pageCount; } private int getDifficuiltyLevel() { return 5 * ageRequirement * text.Length(); } }
In questa versione della classe Book , i campi name e pageCount sono resi pubblici per la lettura e la modifica in altri oggetti. Il metodo getAverageLetterCount() è anche disponibile per essere chiamato da oggetti di altre classi. Tutti gli altri campi e metodi rimangono privati ​​e sono disponibili solo nei metodi di questa classe. Nel metodo pubblico getAverageLetterCount() possiamo chiamare il metodo privato getTextLength() perché getAverageLetterCount() appartiene alla classe stessa. Ma non funzionerà da un metodo di un'altra classe.

Ma perché allora rendere privati ​​i campi? Nel codice Java, vedrai principalmente solo campi privati. Il fatto è che se l'accesso ai campi privati ​​​​viene effettuato tramite i metodi pubblici dell'oggetto, allora con qualsiasi accesso di questo tipo ai campi privati ​​​​sarà possibile eseguire ulteriori azioni e controlli. Maggiori informazioni su questo saranno nella lezione sull'incapsulamento.

Le lezioni finora hanno discusso la creazione di classi, che sono modelli per la creazione di oggetti. Nella stessa lezione verrà descritto il processo di creazione e utilizzo degli oggetti stessi.

Collegamenti
Nel linguaggio Java, una variabile non può mai memorizzare un oggetto. Invece, Java ha riferimenti che puntano alla posizione di un oggetto in memoria.
La sintassi per la creazione di una variabile di tipo riferimento oggetto è la seguente:
<Nome della classe> <nome variabile>;
Vale la pena notare che indichiamo immediatamente la classe i cui oggetti verranno referenziati.

Esempio: una variabile denominata "b" che punta alla classe Book:

Libro b;

Allo stesso modo, puoi creare campi di classe (puoi aggiungere un modificatore di accesso lì). È possibile creare array di riferimenti e restituirli dai metodi. Esempio:

public class Libreria {
  libro pubblico[] libri;
  public Libro findBookWithName(String name) {
//codice che trova il libro giusto
  }
};


Conclusione: in molti modi, puoi lavorare con i riferimenti allo stesso modo delle variabili di altri tipi elementari (int, long, double...).