Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

Java, come gran parte dei linguaggi ad oggetti permette di:

  • definire dati astratti
  • incapsulare l'informazione dello stato
  • riusare caratteristiche di dati già definiti tramite l'ereditarietà
  • scrivere codice indipendente dall'implementazione (polimorfismo)

Il costrutto di classe permette di definire un dato astratto

  • gli attributi definiscono lo stato
  • i metodi definiscono il comportamento

Gli attributi e i metodi possono essere statici o d'istanza.

Se non è specificato diversamente, si sottointende che un attributo/metodo sia d'istanza.

Gli attributi si definiscono come delle variabili all'interno del corpo della classe. Può essere assegnato un valore iniziale agli attributi al momento della dischiarazione, cioè possono essere inizializzati.

I metodi invece si definiscono come delle funzioni all'interno della classe.

  • è possibile definire metodi con o senza parametri
  • non è possibile definire parametri con valore di default
Parola chiave this

Permette di riferirsi all'istanza corrente all'interno dei metodi. this, può consentire di risolvere sovrapposizioni con nomi di parametri e variabili locali.

Attributi e Metodi Statici

Si usa la parola chiave static.

Gli attributi/metodi statici equivalgono a variabili/funzioni globali del namespace della classe. Sono utili quando non interessa lo stato dell'istanza. Per esempio per fare dei contatori globali o funzioni che fanno dei calcoli SOLO in base all'input dato.

MyClass.attributoStatico = 6;

MyClass.funzioneStatica(x,y);

Il famoso Overloading

Java permette l'overloading dei metodi, ossia è possibile avere più metodi con lo stesso nome.

Il compilatore decide staticamente quale versione eseguire in base ai tipi dei parametri. I metodi overloaded devono differire per tipo e/o numero di parametri d'ingresso.

Le interfacce

E' la definizione sintattica di un dato astratto.

Contengono definizioni di costanti e signature dei metodi (sono simile ai file .h di C).

  • le costanti devono necessariamente essere inizializzate
  • i metodi non contengono l'implementazione

Le interfacce possono anche essere vuote. (Design pattern : Marker Interface)

Le classi possono implementare UNA o PIU' interfacce usando la parola chiave "implements".

  • una classe che implementa un'interfaccia è obbligata a implementare i metodi definiti da questa.
  • un uso appropriato delle interfacce permette di scrivere codice indipendente dall'implementazione (polimorfismo)
Costruttori e Garbage Collector

Sono dei metodi particolari che permettono di definire lo stato iniziale degli oggetti creati dalla classe.

  • hanno lostesso nome della classe
  • è permesso l'overloading dei costruttori

Il Garbage Collector si occupa di deallocare la memoria occupata dagli oggetti non più refernziati. 

  • in questo modo non è necessario definire dei distruttori
  • il GC richiama implicitamente il metodo finalize definito nella classe Object
Ereditarietà e Classi Astratte

Si ottiene:

  • riuso del codice
  • polimorfismo per inclusione

In Java tutte le classi derivano, in maniera , direttta o indiretta, da una classe comune: Object.

  • in Java l'eredità è singola e si usa la parola chiave extends

Il costrutto di classe astratta permette di implementare i metodi che mantengono un comportamento comune e definire solo l'interfaccia di altri metodi (detti astratti anche loro) che verranno poi definiti nelle sottoclassi. La parola chiave usata è abstract. I metodi astratti, cioè da ridefinire nelle sotto classi devono essere preceduti da abstract.

Una cosa importante, un'interfaccia può ereditare da una o più interfacce (eredità multipla). Si usa extends.

Overriding

Quando una classe derivata SOVRASCRIVE un metodo della classe base (stesso nome e stessi parametri d'ingresso). Di solito questa metodologia è usata per aggiungere comportamenti al metodo della classe derivata.

  • in questo caso è utile richiamare il metodo della superclasse, usando super e poi si aggiungono altre righe di codice.
Modificatori di Accesso

 

Modificatore final

  • può essere associato a classi e variabili
  • applicato ad una classe indica che questa non può essere estesa
  • applicato a una variabile indica che non può essere riasseganta (definisce una costante)
  • serve per rendere il codice più leggibile

 

 

 

Average (1 Vote)
The average rating is 5.0 stars out of 5.