Classi e oggetti in Java
In Java le classi e gli oggetti costituiscono il fondamento della programmazione orientata agli oggetti (OOP). Aiutano a modellare entità del mondo reale e a organizzare il codice in modo strutturato.
- Una classe è un modello utilizzato per creare oggetti che condividono proprietà e comportamenti comuni.
- Un oggetto è un'istanza di una classe. Rappresenta un'entità specifica creata dal modello di classe.
Ad esempio Dog è una classe Tommy è un oggetto di quella classe.
Classi e oggetti (qui Dog è la classe e Bobby è l'oggetto) Classe Java
Una classe è un progetto che definisce dati e comportamento per gli oggetti. Raggruppa campi e metodi correlati in una singola unità. La memoria per i suoi membri viene allocata solo quando viene creato un oggetto.
- Funziona come un modello per creare oggetti con struttura condivisa.
- Non occupa memoria per i campi fino all'istanziazione.
- Può contenere campi, metodi, costruttori, classi e interfacce nidificate.
class Student { int id ; String n ; public Student ( int id String n ) { this . id = id ; this . n = n ; } } public class Main { public static void main ( String [] args ) { Student s1 = new Student ( 10 'Alice' ); System . out . println ( s1 . id ); System . out . println ( s1 . n ); } }
Produzione
10 Alice
Oggetti Java
Un oggetto è un'istanza di una classe creata per accedere ai suoi dati e alle sue operazioni. Ogni oggetto mantiene il proprio stato.
- Stato : valori memorizzati nei campi.
- Comportamento : Azioni definite attraverso metodi.
- Identità : Distingue un oggetto da un altro.
Gli oggetti rispecchiano elementi del mondo reale come il prodotto o il cerchio del cliente. Gli oggetti non primitivi vengono archiviati nell'heap mentre i loro riferimenti rimangono nello stack.
Oggetti Java (esempio di cani) Istanziazione di oggetti
La creazione di un oggetto è nota come istanziazione. Tutte le istanze di una classe condividono struttura e comportamento memorizzando valori di stato diversi.
Dichiarazione di oggetti Java Dichiarazione:
Ciuffo di cane;
Questo dichiara solo un riferimento. L'oggetto non viene creato e il riferimento è nullo.
Inizializzazione:
tuffy = new Dog('Tuffy' 'Papillon' 5 'Bianco');
Inizializzazione L'operatore new alloca memoria e invoca il costruttore.
Esempio: definizione e utilizzo di una classe
Java public class Dog { String name ; String breed ; int age ; String color ; public Dog ( String name String breed int age String color ) { this . name = name ; this . breed = breed ; this . age = age ; this . color = color ; } public String getName () { return name ; } public String getBreed () { return breed ; } public int getAge () { return age ; } public String getColor () { return color ; } @Override public String toString () { return 'Name is: ' + name + 'nBreed age and color are: ' + breed + ' ' + age + ' ' + color ; } public static void main ( String [] args ) { Dog tuffy = new Dog ( 'tuffy' 'papillon' 5 'white' ); System . out . println ( tuffy ); } }
Produzione
Name is: tuffy Breed age and color are: papillon 5 white
Nota: Ogni classe ha almeno un costruttore. Se non ne viene definito nessuno, Java fornisce un costruttore predefinito senza argomenti che chiama il costruttore genitore.
Inizializza l'oggetto utilizzando il metodo/funzione
Java public class Geeks { static String name ; static float price ; static void set ( String n float p ) { name = n ; price = p ; } static void get () { System . out . println ( 'Software name is: ' + name ); System . out . println ( 'Software price is: ' + price ); } public static void main ( String [] args ) { Geeks . set ( 'Visual Studio' 0.0f ); Geeks . get (); } }
Produzione
Software name is: Visual Studio Software price is: 0.0
Modi per creare oggetti in Java
Java supporta quattro approcci standard.
1. Utilizzo di una nuova parola chiave
Il modo più diretto per creare un oggetto.
Java // creating object of class Test Test t = new Test ();
2. Utilizzo della riflessione
Utilizzato per il caricamento dinamico delle classi come visto in framework come Spring.
Java class Student { public Student () {} } public class Main { public static void main ( String [] args ) { try { Class > c = Class . forName ( 'Student' ); Student s = ( Student ) c . getDeclaredConstructor (). newInstance (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
Produzione
Student@1dbd16a6
3. Utilizzo del metodo clone()
clone() crea una copia di un oggetto esistente. La classe deve implementare Cloneable.
Java class Geeks implements Cloneable { String name = 'GeeksForGeeks' ; @Override protected Object clone () throws CloneNotSupportedException { return super . clone (); } public static void main ( String [] args ) { try { Geeks g1 = new Geeks (); Geeks g2 = ( Geeks ) g1 . clone (); System . out . println ( g2 . name ); } catch ( Exception e ) { e . printStackTrace (); } } }
Produzione
GeeksForGeeks
4. Utilizzo della deserializzazione
La deserializzazione è una tecnica per leggere un oggetto dallo stato salvato in un file. L'oggetto viene ricreato da un flusso di byte archiviato.
Fare riferimento a Serializzazione/Deserializzazione in Java .
Java import java.io.* ; class Student implements Serializable { private String name ; public Student ( String name ) { this . name = name ; } public String toString () { return 'Student: ' + name ; } } public class Main { public static void main ( String [] args ) { try ( ObjectOutputStream out = new ObjectOutputStream ( new FileOutputStream ( 'student.ser' ))) { out . writeObject ( new Student ( 'Alice' )); } catch ( IOException e ) { e . printStackTrace (); } try ( ObjectInputStream in = new ObjectInputStream ( new FileInputStream ( 'student.ser' ))) { Student s = ( Student ) in . readObject (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
Produzione
Student: Alice
Un singolo riferimento può puntare a oggetti diversi in momenti diversi.
Java Test test = new Test (); test = new Test ();
Nell'ereditarietà è comune utilizzare un riferimento genitore per gli oggetti figli.
Java Animal obj = new Dog (); obj = new Cat ();
Gli oggetti senza riferimenti diventano idonei per la Garbage Collection.
Oggetti anonimi
Gli oggetti anonimi vengono creati senza riferimento e utilizzati immediatamente per operazioni una tantum.
- Nessuna variabile di riferimento: non è possibile riutilizzare l'oggetto.
- Creato e utilizzato consente di risparmiare immediatamente memoria per attività di breve durata.
- Comune nella gestione degli eventi (ad esempio clic sui pulsanti).
new Dog ( 'Max' 'Labrador' 3 'Black' ). getName ();
Comune nella gestione degli eventi dell'interfaccia utente.
Crea quiz