Come creare una classe in Java
Java è un linguaggio di programmazione orientato agli oggetti ( OOP ). E' quindi possibile creare le classi, le sottoclassi e definire l'ereditarietà degli oggetti.
Come funziona una classe in Java
Per dichiarare una classe uso l'istruzione class
Tra parentesi graffe inserisco i metodi e le proprietà della classe.
class Nomeclasse {
...
}
Dopo aver definito la classe, posso eseguire le istanze per associare gli oggetti alla classe.
Creo un oggetto e lo istanzio alla classe con new.
Oggetto = new Nomeclasse(parametri);
Tra parentesi posso specificare gli eventuali parametri dell'istanza. Se non li indico, la classe usa i valori di default della classe.
Java istanzia l'oggetto e inizializza le variabili della classe con i valori di default tramite il metodo costruttore.
Cos'è il metodo costruttore? E' il metodo eseguito automaticamente quando si istanzia un nuovo oggetto per inizializzare le variabili della classe.
Un esempio pratico
In questo codice dichiaro una classe ( animali ) ed effettuo un'istanza su un nuovo oggetto ( cane )
- public class prova{
- public static void main(String []args){
- class animali {
- String genere;
- String specie;
- }
- animali cane = new animali();
- cane.genere="Canis";
- cane.specie="Canis lupus";
- System.out.println(cane.genere);
- }
- }
Nelle righe da 2 a 6 creo la classe animali. E' una classe composta da due variabili ( genere e specie ).
Nella riga 7 creo un nuovo oggetto ( cane ) associandolo alla classe animali. L'oggetto eredita automaticamente tutte le proprietà e i metodi della classe.
animali cane = new animali();
Poi assegno due valori alle proprietà dell'oggetto.
cane.genere="Canis";
cane.specie="Canis lupus";
Infine, stampo sullo schermo il contenuto di una proprietà dell'oggetto.
System.out.println(cane.genere);
Il risultato in output è il seguente:
Canis
E così via.
Tipi di classi ( pubblica, privata o protetta )
Nella dichiarazione di una classe posso indicare il tipo di accesso alla classe tramite un modificatore.
- public, la classe è pubblica
- private, la classe è privata
- protected, la classe è protetta
Il modificatore di accessibilità della classe va inserito prima della dichiarazione class.
Esempio
Quando la classe è pubblica, è accessibile da tutti.
public class nome{
..
}
Le variabili e i metodi della classe
Le variabili di istanza sono le variabili usate nella classe. In genere, sono dichiarate nelle prime righe della classe.
Esempio
- class animali {
- String genere;
- String specie;
- }
Per definire le variabili di classe si usa la clausola static.
Nelle variabili di classe sono assegnate le informazioni comuni a tutti gli oggetti della classe.
Mentre per definire una costante si usa la clausola final.
Esempio
- class animali {
- String genere;
- static String soprannome;
- final int versione;
- }
Alle variabili seguono i metodi.
I metodi sono funzioni dichiarate all'interno della classe.
Possono essere richiamate dagli oggetti assegnati alla classe.
Esempio
- class animali {
- String genere;
- int somma(int a, int b) {
- int s=a+b;
- return s;
- }
- }
Come dichiarare una sottoclasse
In Java posso dichiarare una classe come estensione di un'altra classe madre ( superclasse ) tramite la clausola extends.
class nome_classe extends classe_madre {
..
}
La sottoclasse eredita tutte le proprietà della classe madre.
Alle proprietà della classe madre posso ovviamente aggiungere alla sottoclasse altre proprietà più specifiche.
Un esempio pratico
Creo una classe (animali)
- class animali {
- String genere;
- String specie;
- }
Poi creo una sottoclasse mammiferi che estende le proprietà della precedente.
- class mammiferi extends animali {
- String commento;
- }
La sottoclasse mammiferi eredita le proprietà genere e specie della classe animali.
A queste proprietà aggiunge la proprietà commento.
A questo punto posso creare e istanziare un oggetto (cane) con la sottoclasse mammiferi.
- animali2 cane = new animali2();
- cane.genere="Canis";
- cane.specie="Canis lupus";
- cane.commento="questo è un commento";
Se un metodo non restituisce alcun valore, deve essere dichiarato con void.
La clausola Abstract
La clausola Abstract impedisce a una classe di essere istanziata.
abstract class nome{
...
}
La clausola Final
La clausola Final impedisce la creazione di sottoclassi dalla classe.
final class nome{
...
}
E così via.