Please enable JavaScript.
Coggle requires JavaScript to display documents.
JAVA - Coggle Diagram
JAVA
-
Ereditarietà
Per definire stato e comportamento di nuovi oggetti, è utile avere una base da cui partire.
In particolare, un nuovo oggetto potrebbe essere un caso particolare di una tipologia di oggetti esistente, già definita in precedenza.
-
Una classe, detta superclasse, può essere specializzata definendo una sottoclasse che ne contenga casi particolari.
-
-
Questo significa che la sottoclasse possiede tutti i campi e metodi (con accesso public o protected) della superclasse.
Però nella sottoclasse si possono aggiungere o modificare campi e metodi per specializzare la superclasse
Per un’immagine più chiara può essere più intuitivo pensare che la sottoclasse estende (in inglese: extends) la superclasse, e parlare rispettivamente di classe estesa (o classe derivata) e classe base
Un’istanza di una sottoclasse è anche effettivamente istanza della superclasse(associazione «IS A»), quindi ne può ereditare e usare i metodi
In aggiunta la classe estesa può: definire altri metodi non previsti e ridefinire i metodi della classe base.
-
CLASSE ASTRATTA
Una classe astratta è simile a una classe regolare: può avere attributi, può avere metodi, è caratterizzata dalla parola chiave abstract, ed ha tuttavia solitamente almeno un metodo che è dichiarato ma non implementato (abstract).
Una classe astratta può quindi definire metodi la cui implementazione è demandata alle sottoclassi; suppone l’esistenza di almeno una sottoclasse.
Una classe astratta può anche non avere metodi astratti; in tal caso è definita astratta per non essere implementata, e costituire semplicemente una categoria concettuale, quindi l’imposizione della parola chiave abstract nella classe NON implica che i metodi saranno astratti; essi sono “liberi”.
Se comunque almeno un metodo è abstract, la classe deve essere dichiarata abstract.
-
-
Overriding
-
L’overriding deve rispettare i tipi coinvolti, e perciò vale solo per i metodi.
-
La classe Object
In Java, tutte le classi si considerano
sottoclassi di una speciale classe Object.
Solitamente è bene fare overriding dei metodi ereditati automaticamente dalla classe Object (come, ad esempio, il metodo toString(), che restituisce una rappresentazione stringa dell’oggetto)
Alcuni linguaggi di programmazione permettono che una classe possa ereditare metodi e caratteristiche da più classi base (ereditarietà multipla).)
Per evitare problemi, Java usa un modello a ereditarietà singola. Una sorta di ereditarietà multipla viene però introdotta dalle interfacce