2017 i g di bindingpages.di.unipi.it/.../slides/32lunedi8-5/lezione13.pdf · import java. io * ,...
TRANSCRIPT
1/15 Lezione13.pdf (#1)2017-05-08 16:20:18
1/12
Java: Basilari di Gerarchie di Classi
Sommario: 3-8 Maggio, 2017
Classi e Sottoclassi: Oggetti e Costruttori
Sottoclassi: Interfacce, Ereditarieta e Shadowing
Overriding di metodi
Binding dinamico dei metodi: Late Binding
Overloading e Overriding: Cautele.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
2/15 Lezione13.pdf (2/15)2017-05-08 16:20:18
2/12
Classi e Sottoclassi: Oggetti e Costruttori
Sottoclasse Estende la gerarchia delle classi del programma:
Estende campi e metodi della (super)classeEredita campi e metodi della superclasse
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
3/15 Lezione13.pdf (3/15)2017-05-08 16:20:18
3/4
Classi e Sottoclassi: Oggetti e Costruttori
Sottoclasse Estende la gerarchia delle classi del programma:
Estende campi e metodi della (super)classeEredita campi e metodi della superclasse
(a destra: vista delle classi)
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
4/15 Lezione13.pdf (4/15)2017-05-08 16:20:18
4/4
Classi e Sottoclassi: Oggetti e Costruttori
Sottoclasse Estende la gerarchia delle classi del programma:
Estende campi e metodi della (super)classeEredita campi e metodi della superclasse
(a destra: vista di un oggetto di tipo B)
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
5/15 Lezione13.pdf (5/15)2017-05-08 16:20:18
5/10
Classi e Sottoclassi: Oggetti e Costruttori
Sottoclasse Estende la gerarchia delle classi del programma:
(a destra: vista di uno stato)
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
6/15 Lezione13.pdf (6/15)2017-05-08 16:20:18
6/13
Ereditarieta: Shadowing
shadowing Una sottoclasse ridefinisce un field, e accede didefault ...
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
7/15 Lezione13.pdf (7/15)2017-05-08 16:20:18
7/13
Ereditarieta: Shadowing/2
shadowing Una sottoclasse ridefinisce un field, accede didefault ... Ma puo accedere a entrambi. In questo caso, lopuo fare in due modi diversi:
Applicabile perche il field e di classe.
Il secondo modo, accede al campo attraverso l’oggetto
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
8/15 Lezione13.pdf (8/15)2017-05-08 16:20:18
8/13
Ereditarieta: Shadowing/3
shadowing Una sottoclasse ridefinisce un field, accede didefault ... Ma puo accedere a entrambi, in due modi diversi:
Applicabile perche il field e di classe.
Il secondo modo, accede al campo attraverso l’oggetto
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
9/15 Lezione13.pdf (9/15)2017-05-08 16:20:18
9/13
Ereditarieta: Overriding
E l’analogo dello shadowing su metodi anziche campi.
Una sottoclasse ridefinisce un metodo della super, rispettando leseguenti 3 condizioni:
metodo di istanza (non si applica a costruttori
stesso nome, stessi tipi degli argomenti,
eventuale tipo del valore calcolato ed eventuali tipi delle eccezioni
sollevabili devono essere sotto-tipi del metodo della super.
Riuso di codice.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
10/15 Lezione13.pdf (10/15)2017-05-08 16:20:18
10/13
Ereditarieta: Overriding e Late Binding
Quale binding deve assegnare il compilatore all’identificatore "f"che compare nell’invocazione "aa.f()"?
Late Binding Il binding e stabilito dinamicamente, guardando:+ il tipo e↵ettivo dell’oggetto calcolato dall’espressione di invo-cazione, "aa" nel nostro caso.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
11/15 Lezione13.pdf (11/15)2017-05-08 16:20:18
11/13
Ereditarieta: Overriding e (Down) Cast
La variabile "aa" ha comunque, tipo A e l’espressione "aa.h()"non e (sempre) definita.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
12/15 Lezione13.pdf (12/15)2017-05-08 16:20:18
12/13
Ereditarieta: Overriding e (Down) Cast/2
(Down) Cast deve essere utilizzato: (T)E assicura che il tipoe↵ettivo del valore calcolato da E sia T.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
13/15 Lezione13.pdf (13/15)2017-05-08 16:20:18
13/13
Overloading vs. Overriding
Overloading Metodi statici e non, ereditati e non, che hannostesso nome ma sono, a coppie, di↵erenti:
per numero di argomenti, o per tipo di un argomento, oppurese uno e ereditato, ha tipo calcolato che non e supertipo deltipo calcolato dell’altro metodo
Metodi overloaded sono tutti visibili e applicabili:
In caso di invocazione di metodo overloaded, a compile time escelto quello tra gli applicabili piu prossimo al tipo atteso.
Cautela. Errori nella definizione di un metodo overridding,rendono il metodo della superclasse overloaded (invece cheoveridden) e applicabile invece di essere ”scavalcato” dalmetodo della sottoclasse.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
14/15 Lezione13.pdf (14/15)2017-05-08 16:20:18
2/20
Overloading
Overloading Metodi statici e non, ereditati e non, che hannostesso nome ma sono, a coppie, di↵erenti:
per numero di argomenti, o per tipo di un argomento, oppurese uno e ereditato, ha tipo calcolato che non e supertipo deltipo calcolato dell’altro metodo
In caso di invocazione di metodo overloaded, a compile time escelto quello tra gli applicabili piu prossimo al tipo atteso.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo
15/15 Lezione13.pdf (15/15)2017-05-08 16:20:18
3/20
Overloading
Cautela. Errori nella definizione, possono rendere overloadedun metodo che nelle intenzioni deve essere overridden.
prof. Marco Bellia, Dip. Informatica, Universita di Pisa Java: Basics della Programmazione in Piccolo