![Page 1: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/1.jpg)
Capitolo 8
Estensione delle classi
c© 2005 Pearson Education Italia Capitolo 8 - 1 / 111
![Page 2: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/2.jpg)
Sommario: Estensione delle classi
1 Ereditarieta e implementazione di sottoclassiCostruttori e gerarchia delle classisuperOverloading e overridingIl metodo equals
2 Variabili e adombramento
3 Classi astratte
4 Implementazione della classe Rettangolo
5 Il modificatore protected
6 Il modificatore final
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 2 / 111
![Page 3: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/3.jpg)
Estensione di una classe
E possibile estendere una classe senza conoscere nulladell’implementazione della classe estesa, ma solo il contratto
Esempio
class Quadrato extends Rettangolo {...
}
extends indica che:
la classe Quadrato e ottenuta dalla classe Rettangolo estendendonestato e comportamento
Quadrato e una sottoclasse di Rettangolo
Rettangolo e una superclasse di Quadrato
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 4 / 111
![Page 4: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/4.jpg)
Estensione di una classe
E possibile estendere una classe senza conoscere nulladell’implementazione della classe estesa, ma solo il contratto
Esempio
class Quadrato extends Rettangolo {...
}
extends indica che:
la classe Quadrato e ottenuta dalla classe Rettangolo estendendonestato e comportamento
Quadrato e una sottoclasse di Rettangolo
Rettangolo e una superclasse di Quadrato
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 4 / 111
![Page 5: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/5.jpg)
Estensione di una classe
E possibile estendere una classe senza conoscere nulladell’implementazione della classe estesa, ma solo il contratto
Esempio
class Quadrato extends Rettangolo {...
}
extends indica che:
la classe Quadrato e ottenuta dalla classe Rettangolo estendendonestato e comportamento
Quadrato e una sottoclasse di Rettangolo
Rettangolo e una superclasse di Quadrato
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 4 / 111
![Page 6: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/6.jpg)
Estensione di una classe
E possibile estendere una classe senza conoscere nulladell’implementazione della classe estesa, ma solo il contratto
Esempio
class Quadrato extends Rettangolo {...
}
extends indica che:
la classe Quadrato e ottenuta dalla classe Rettangolo estendendonestato e comportamento
Quadrato e una sottoclasse di Rettangolo
Rettangolo e una superclasse di Quadrato
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 4 / 111
![Page 7: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/7.jpg)
Ereditarieta
Esempio
class Quadrato extends Rettangolo {...
}
La classe Quadrato eredita (e quindi dispone) di tutti
i campii metodi
definiti nella classe Rettangolo
Cio non implica che questi membri siano accessibili nel codice diQuadrato (dipende dalla visibilita)
I costruttori non vengono ereditati
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 6 / 111
![Page 8: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/8.jpg)
Ereditarieta
Esempio
class Quadrato extends Rettangolo {...
}
La classe Quadrato eredita (e quindi dispone) di tutti
i campii metodi
definiti nella classe Rettangolo
Cio non implica che questi membri siano accessibili nel codice diQuadrato (dipende dalla visibilita)
I costruttori non vengono ereditati
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 6 / 111
![Page 9: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/9.jpg)
Ereditarieta
Esempio
class Quadrato extends Rettangolo {...
}
La classe Quadrato eredita (e quindi dispone) di tutti
i campii metodi
definiti nella classe Rettangolo
Cio non implica che questi membri siano accessibili nel codice diQuadrato (dipende dalla visibilita)
I costruttori non vengono ereditati
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 6 / 111
![Page 10: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/10.jpg)
I costruttori della sottoclasse
Costruzione di un oggetto
La costruzione di un oggetto di una sottoclasse avviene costruendo unoggetto della superclasse e adattandolo alle esigenze della sottoclasse
Esempio
public Quadrato(double x) {super(x, x);
}
superPer invocare un costruttore della superclasse nel costruttore di unasottoclasse diretta
In caso di overloading, il costruttore invocato viene riconosciuto inbase alla lista degli argomenti fornita a super
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 8 / 111
![Page 11: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/11.jpg)
I costruttori della sottoclasse
Costruzione di un oggetto
La costruzione di un oggetto di una sottoclasse avviene costruendo unoggetto della superclasse e adattandolo alle esigenze della sottoclasse
Esempio
public Quadrato(double x) {super(x, x);
}
superPer invocare un costruttore della superclasse nel costruttore di unasottoclasse diretta
In caso di overloading, il costruttore invocato viene riconosciuto inbase alla lista degli argomenti fornita a super
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 8 / 111
![Page 12: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/12.jpg)
I costruttori della sottoclasse
Costruzione di un oggetto
La costruzione di un oggetto di una sottoclasse avviene costruendo unoggetto della superclasse e adattandolo alle esigenze della sottoclasse
Esempio
public Quadrato(double x) {super(x, x);
}
superPer invocare un costruttore della superclasse nel costruttore di unasottoclasse diretta
In caso di overloading, il costruttore invocato viene riconosciuto inbase alla lista degli argomenti fornita a super
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 8 / 111
![Page 13: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/13.jpg)
La classe Quadrato
public class Quadrato extends Rettangolo {
public Quadrato(double x) {super(x, x);
}
public double getLato() {return getBase();
}
public String toString() {return "lato = " + getLato();
}
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 10 / 111
![Page 14: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/14.jpg)
Costruttori e gerarchia delle classi
Generalmente un costruttore non opera da solo, ma si avvale dell’ausilio di:
(1) un altro costruttore della stessa classe
public Frazione(int x) {this(x, 1);
}
(2) un costruttore della superclasse
public Quadrato(double x) {super(x, x);
}
L’invocazione di un costruttore tramite this o super dev’essere la primaistruzione del costruttore
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 12 / 111
![Page 15: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/15.jpg)
Costruttori e gerarchia delle classi
Generalmente un costruttore non opera da solo, ma si avvale dell’ausilio di:
(1) un altro costruttore della stessa classe
public Frazione(int x) {this(x, 1);
}
(2) un costruttore della superclasse
public Quadrato(double x) {super(x, x);
}
L’invocazione di un costruttore tramite this o super dev’essere la primaistruzione del costruttore
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 12 / 111
![Page 16: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/16.jpg)
Costruttori e gerarchia delle classi
Generalmente un costruttore non opera da solo, ma si avvale dell’ausilio di:
(1) un altro costruttore della stessa classe
public Frazione(int x) {this(x, 1);
}
(2) un costruttore della superclasse
public Quadrato(double x) {super(x, x);
}
L’invocazione di un costruttore tramite this o super dev’essere la primaistruzione del costruttore
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 12 / 111
![Page 17: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/17.jpg)
Costruttori
Se in una classe non sidefiniscono costruttori
viene automaticamente aggiuntoun costruttore privo di argomenti (eprivo di codice)
Se un costruttore non ne in-voca esplicitamente un altrotramite this o super
come prima istruzione viene auto-maticamente invocato il costruttoreprivo di argomenti della superclasse
Eccezione
Il costruttore della classe Object predispone l’oggetto senza alcun ausilio.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 13 / 111
![Page 18: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/18.jpg)
Costruttori
Se in una classe non sidefiniscono costruttori
viene automaticamente aggiuntoun costruttore privo di argomenti (eprivo di codice)
Se un costruttore non ne in-voca esplicitamente un altrotramite this o super
come prima istruzione viene auto-maticamente invocato il costruttoreprivo di argomenti della superclasse
Eccezione
Il costruttore della classe Object predispone l’oggetto senza alcun ausilio.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 13 / 111
![Page 19: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/19.jpg)
Costruttori
Se in una classe non sidefiniscono costruttori
viene automaticamente aggiuntoun costruttore privo di argomenti (eprivo di codice)
Se un costruttore non ne in-voca esplicitamente un altrotramite this o super
come prima istruzione viene auto-maticamente invocato il costruttoreprivo di argomenti della superclasse
Eccezione
Il costruttore della classe Object predispone l’oggetto senza alcun ausilio.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 13 / 111
![Page 20: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/20.jpg)
Costruttori
Se in una classe non sidefiniscono costruttori
viene automaticamente aggiuntoun costruttore privo di argomenti (eprivo di codice)
Se un costruttore non ne in-voca esplicitamente un altrotramite this o super
come prima istruzione viene auto-maticamente invocato il costruttoreprivo di argomenti della superclasse
Eccezione
Il costruttore della classe Object predispone l’oggetto senza alcun ausilio.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 13 / 111
![Page 21: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/21.jpg)
Costruttori
Se in una classe non sidefiniscono costruttori
viene automaticamente aggiuntoun costruttore privo di argomenti (eprivo di codice)
Se un costruttore non ne in-voca esplicitamente un altrotramite this o super
come prima istruzione viene auto-maticamente invocato il costruttoreprivo di argomenti della superclasse
Eccezione
Il costruttore della classe Object predispone l’oggetto senza alcun ausilio.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 13 / 111
![Page 22: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/22.jpg)
Esempio
Nell’implementazione della classe A non e stato scritto esplicitamentealcun costruttore...
...il compilatore aggiunge:
public A() {super();
}
Importante
Se la superclasse di A non dispone di un costruttore privo di argomenti, ilcompilatore segnalera un errore
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 15 / 111
![Page 23: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/23.jpg)
Esempio
Nell’implementazione della classe A non e stato scritto esplicitamentealcun costruttore...
...il compilatore aggiunge:
public A() {super();
}
Importante
Se la superclasse di A non dispone di un costruttore privo di argomenti, ilcompilatore segnalera un errore
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 15 / 111
![Page 24: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/24.jpg)
Esempio
Nell’implementazione della classe A non e stato scritto esplicitamentealcun costruttore...
...il compilatore aggiunge:
public A() {super();
}
Importante
Se la superclasse di A non dispone di un costruttore privo di argomenti, ilcompilatore segnalera un errore
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 15 / 111
![Page 25: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/25.jpg)
Esempio
La classe Quadrato ha un costruttore con un argomento.
Quindi il costruttore privo di argomenti non viene aggiuntoautomaticamente
Se aggiungiamo il costruttore:
public Quadrato() {}
il compilatore segnalera un errore
questo costruttore invoca (implicitamente) super(), ma Rettangolonon ha un costruttore privo di argomenti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 17 / 111
![Page 26: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/26.jpg)
Esempio
La classe Quadrato ha un costruttore con un argomento.
Quindi il costruttore privo di argomenti non viene aggiuntoautomaticamente
Se aggiungiamo il costruttore:
public Quadrato() {}
il compilatore segnalera un errore
questo costruttore invoca (implicitamente) super(), ma Rettangolonon ha un costruttore privo di argomenti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 17 / 111
![Page 27: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/27.jpg)
Esempio
La classe Quadrato ha un costruttore con un argomento.
Quindi il costruttore privo di argomenti non viene aggiuntoautomaticamente
Se aggiungiamo il costruttore:
public Quadrato() {}
il compilatore segnalera un errore
questo costruttore invoca (implicitamente) super(), ma Rettangolonon ha un costruttore privo di argomenti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 17 / 111
![Page 28: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/28.jpg)
Esempio: Quadrato
Una possibile definizione del costruttore privo di argomenti
public Quadrato() {this(0);
}
oppure
public Quadrato() {super(0, 0);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 19 / 111
![Page 29: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/29.jpg)
Esempio: Quadrato
Una possibile definizione del costruttore privo di argomenti
public Quadrato() {this(0);
}
oppure
public Quadrato() {super(0, 0);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 19 / 111
![Page 30: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/30.jpg)
Esempio: Quadrato
Una possibile definizione del costruttore privo di argomenti
public Quadrato() {this(0);
}
oppure
public Quadrato() {super(0, 0);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 19 / 111
![Page 31: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/31.jpg)
Esempio: Quadrato
Una possibile definizione del costruttore privo di argomenti
public Quadrato() {this(0);
}
oppure
public Quadrato() {super(0, 0);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 19 / 111
![Page 32: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/32.jpg)
super: due utilizzi...
(1) Come costruttorePer richiamare un costruttore della superclasse nel codice delcostruttore della sottoclasse
(2) Come pseudovariabile
(a) per invocare un metodo della superclasse nel codice della sottoclasse
la ricerca del metodo da eseguire non parte dalla classe effettivadell’oggetto, ma dalla superclasse della classe in cui e scrittal’invocazione stessa
(b) per accedere ai campi della superclasse
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 20 / 111
![Page 33: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/33.jpg)
super: due utilizzi...
(1) Come costruttorePer richiamare un costruttore della superclasse nel codice delcostruttore della sottoclasse
(2) Come pseudovariabile
(a) per invocare un metodo della superclasse nel codice della sottoclasse
la ricerca del metodo da eseguire non parte dalla classe effettivadell’oggetto, ma dalla superclasse della classe in cui e scrittal’invocazione stessa
(b) per accedere ai campi della superclasse
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 20 / 111
![Page 34: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/34.jpg)
super: due utilizzi...
(1) Come costruttorePer richiamare un costruttore della superclasse nel codice delcostruttore della sottoclasse
(2) Come pseudovariabile
(a) per invocare un metodo della superclasse nel codice della sottoclasse
la ricerca del metodo da eseguire non parte dalla classe effettivadell’oggetto, ma dalla superclasse della classe in cui e scrittal’invocazione stessa
(b) per accedere ai campi della superclasse
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 20 / 111
![Page 35: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/35.jpg)
super: due utilizzi...
(1) Come costruttorePer richiamare un costruttore della superclasse nel codice delcostruttore della sottoclasse
(2) Come pseudovariabile
(a) per invocare un metodo della superclasse nel codice della sottoclasse
la ricerca del metodo da eseguire non parte dalla classe effettivadell’oggetto, ma dalla superclasse della classe in cui e scrittal’invocazione stessa
(b) per accedere ai campi della superclasse
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 20 / 111
![Page 36: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/36.jpg)
Esempio
Potremmo aggiungere a Quadrato i metodi:
public String getDescrizione1() {return this.toString();
}
public String getDescrizione2() {return super.toString();
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 22 / 111
![Page 37: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/37.jpg)
Esempio
Potremmo aggiungere a Quadrato i metodi:
public String getDescrizione1() {return this.toString();
}
public String getDescrizione2() {return super.toString();
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 22 / 111
![Page 38: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/38.jpg)
Overloading
Overloading
La possibilita di avere metodi o costruttori con lo stesso nome masegnatura diversa.
Segnatura = nome del metodo e lista dei tipi dei suoi argomenti
L’overloading viene risolto in fase di compilazione
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 23 / 111
![Page 39: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/39.jpg)
Overloading
Overloading
La possibilita di avere metodi o costruttori con lo stesso nome masegnatura diversa.
Segnatura = nome del metodo e lista dei tipi dei suoi argomenti
L’overloading viene risolto in fase di compilazione
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 23 / 111
![Page 40: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/40.jpg)
Overloading
Overloading
La possibilita di avere metodi o costruttori con lo stesso nome masegnatura diversa.
Segnatura = nome del metodo e lista dei tipi dei suoi argomenti
L’overloading viene risolto in fase di compilazione
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 23 / 111
![Page 41: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/41.jpg)
Esempio
public static double valoreAssoluto(double x) {if (x > 0)
return x;else
return -x;}
public static int valoreAssoluto(int x) {return (int) valoreAssoluto((double) x);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 25 / 111
![Page 42: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/42.jpg)
Esempio
public static double valoreAssoluto(double x) {if (x > 0)
return x;else
return -x;}
public static int valoreAssoluto(int x) {return (int) valoreAssoluto((double) x);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 25 / 111
![Page 43: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/43.jpg)
Compilazione: scelta della segnatura
In compilazione viene scelta la segnatura del metodo da eseguire in base:
(1) al tipo del riferimento utilizzato per invocare il metodo
(2) al tipo degli argomenti indicati nella chiamata
Esempio
A r;...r.m(2)
Il compilatore cerca fra tutte le segnature di metodi di nome mdisponibili per il tipo A . . .
. . . quella “piu adatta” per gli argomenti specificati
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 27 / 111
![Page 44: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/44.jpg)
Compilazione: scelta della segnatura
In compilazione viene scelta la segnatura del metodo da eseguire in base:
(1) al tipo del riferimento utilizzato per invocare il metodo
(2) al tipo degli argomenti indicati nella chiamata
Esempio
A r;...r.m(2)
Il compilatore cerca fra tutte le segnature di metodi di nome mdisponibili per il tipo A . . .
. . . quella “piu adatta” per gli argomenti specificati
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 27 / 111
![Page 45: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/45.jpg)
Compilazione: scelta della segnatura
In compilazione viene scelta la segnatura del metodo da eseguire in base:
(1) al tipo del riferimento utilizzato per invocare il metodo
(2) al tipo degli argomenti indicati nella chiamata
Esempio
A r;...r.m(2)
Il compilatore cerca fra tutte le segnature di metodi di nome mdisponibili per il tipo A . . .
. . . quella “piu adatta” per gli argomenti specificati
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 27 / 111
![Page 46: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/46.jpg)
Compilazione: scelta della segnatura
In compilazione viene scelta la segnatura del metodo da eseguire in base:
(1) al tipo del riferimento utilizzato per invocare il metodo
(2) al tipo degli argomenti indicati nella chiamata
Esempio
A r;...r.m(2)
Il compilatore cerca fra tutte le segnature di metodi di nome mdisponibili per il tipo A . . .
. . . quella “piu adatta” per gli argomenti specificati
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 27 / 111
![Page 47: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/47.jpg)
Esempio
A r;...r.m(2)
Se le segnature disponibili per il tipo A sono:
int m(byte b)int m(long l)int m(double d)
il compilatore sceglie la seconda
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 29 / 111
![Page 48: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/48.jpg)
Overriding
Overriding
Quando si riscrive in una sottoclasse un metodo della superclasse con lastessa segnatura.
L’overriding viene risolto in fase di esecuzione
Compilazionescelta della segnatura
il compilatore stabilisce la segnatura delmetodo da eseguire (early binding)
Esecuzionescelta del metodo
Il metodo da eseguire, tra quelli con lasegnatura selezionata, viene scelto al mo-mento dell’esecuzione, sulla base del tipodell’oggetto (late binding)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 30 / 111
![Page 49: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/49.jpg)
Overriding
Overriding
Quando si riscrive in una sottoclasse un metodo della superclasse con lastessa segnatura.
L’overriding viene risolto in fase di esecuzione
Compilazionescelta della segnatura
il compilatore stabilisce la segnatura delmetodo da eseguire (early binding)
Esecuzionescelta del metodo
Il metodo da eseguire, tra quelli con lasegnatura selezionata, viene scelto al mo-mento dell’esecuzione, sulla base del tipodell’oggetto (late binding)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 30 / 111
![Page 50: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/50.jpg)
Overriding
Overriding
Quando si riscrive in una sottoclasse un metodo della superclasse con lastessa segnatura.
L’overriding viene risolto in fase di esecuzione
Compilazionescelta della segnatura
il compilatore stabilisce la segnatura delmetodo da eseguire (early binding)
Esecuzionescelta del metodo
Il metodo da eseguire, tra quelli con lasegnatura selezionata, viene scelto al mo-mento dell’esecuzione, sulla base del tipodell’oggetto (late binding)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 30 / 111
![Page 51: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/51.jpg)
Overriding
Overriding
Quando si riscrive in una sottoclasse un metodo della superclasse con lastessa segnatura.
L’overriding viene risolto in fase di esecuzione
Compilazionescelta della segnatura
il compilatore stabilisce la segnatura delmetodo da eseguire (early binding)
Esecuzionescelta del metodo
Il metodo da eseguire, tra quelli con lasegnatura selezionata, viene scelto al mo-mento dell’esecuzione, sulla base del tipodell’oggetto (late binding)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 30 / 111
![Page 52: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/52.jpg)
Fase di compilazione
(1) Scelta delle segnature “candidate”
Il compilatore individua le segnature che possono soddisfare lachiamata
(a) compatibile con gli argomenti utilizzati nella chiamata
il numero dei parametri nella segnatura e uguale al numero degliargomenti utilizzatiogni argomento e di un tipo assegnabile al corrispondenteparametro
(b) accessibile al codice chiamante
Se non esistono segnature candidate, il compilatore segnala un errore.
(2) Scelta della segnatura “piu specifica”
Tra le segnature candidate, il compilatore seleziona quella che richiedeil minor numero di promozioni
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 32 / 111
![Page 53: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/53.jpg)
Fase di compilazione
(1) Scelta delle segnature “candidate”
Il compilatore individua le segnature che possono soddisfare lachiamata
(a) compatibile con gli argomenti utilizzati nella chiamata
il numero dei parametri nella segnatura e uguale al numero degliargomenti utilizzatiogni argomento e di un tipo assegnabile al corrispondenteparametro
(b) accessibile al codice chiamante
Se non esistono segnature candidate, il compilatore segnala un errore.
(2) Scelta della segnatura “piu specifica”
Tra le segnature candidate, il compilatore seleziona quella che richiedeil minor numero di promozioni
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 32 / 111
![Page 54: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/54.jpg)
Fase di compilazione
(1) Scelta delle segnature “candidate”
Il compilatore individua le segnature che possono soddisfare lachiamata
(a) compatibile con gli argomenti utilizzati nella chiamata
il numero dei parametri nella segnatura e uguale al numero degliargomenti utilizzatiogni argomento e di un tipo assegnabile al corrispondenteparametro
(b) accessibile al codice chiamante
Se non esistono segnature candidate, il compilatore segnala un errore.
(2) Scelta della segnatura “piu specifica”
Tra le segnature candidate, il compilatore seleziona quella che richiedeil minor numero di promozioni
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 32 / 111
![Page 55: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/55.jpg)
Fase di compilazione
(1) Scelta delle segnature “candidate”
Il compilatore individua le segnature che possono soddisfare lachiamata
(a) compatibile con gli argomenti utilizzati nella chiamata
il numero dei parametri nella segnatura e uguale al numero degliargomenti utilizzatiogni argomento e di un tipo assegnabile al corrispondenteparametro
(b) accessibile al codice chiamante
Se non esistono segnature candidate, il compilatore segnala un errore.
(2) Scelta della segnatura “piu specifica”
Tra le segnature candidate, il compilatore seleziona quella che richiedeil minor numero di promozioni
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 32 / 111
![Page 56: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/56.jpg)
Fase di compilazione: scelta della segnatura
C gamma;
- gamma.toString()
Una segnatura candidata: toString
- gamma.equals(alfa)
equals con parametro di tipo Object (ereditatoda Object)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 34 / 111
![Page 57: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/57.jpg)
Fase di compilazione: scelta della segnatura
C gamma;
- gamma.toString()
Una segnatura candidata: toString
- gamma.equals(alfa)
equals con parametro di tipo Object (ereditatoda Object)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 34 / 111
![Page 58: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/58.jpg)
Fase di compilazione: scelta della segnatura
C gamma;
- gamma.toString()
Una segnatura candidata: toString
- gamma.equals(alfa)
equals con parametro di tipo Object (ereditatoda Object)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 34 / 111
![Page 59: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/59.jpg)
Fase di compilazione: scelta della segnatura
C gamma;
- gamma.toString()
Una segnatura candidata: toString
- gamma.equals(alfa)
equals con parametro di tipo Object (ereditatoda Object)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 34 / 111
![Page 60: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/60.jpg)
Fase di compilazione: scelta della segnatura
C gamma;
- gamma.toString()
Una segnatura candidata: toString
- gamma.equals(alfa)
equals con parametro di tipo Object (ereditatoda Object)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 34 / 111
![Page 61: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/61.jpg)
Fase di compilazione: scelta della segnatura
A alfa;
- alfa.assegna(2)
Una segnatura candidata: assegna(long x)
- alfa.assegna(2.0)
Nessuna segnatura candidata (errore)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 36 / 111
![Page 62: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/62.jpg)
Fase di compilazione: scelta della segnatura
A alfa;
- alfa.assegna(2)
Una segnatura candidata: assegna(long x)
- alfa.assegna(2.0)
Nessuna segnatura candidata (errore)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 36 / 111
![Page 63: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/63.jpg)
Fase di compilazione: scelta della segnatura
A alfa;
- alfa.assegna(2)
Una segnatura candidata: assegna(long x)
- alfa.assegna(2.0)
Nessuna segnatura candidata (errore)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 36 / 111
![Page 64: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/64.jpg)
Fase di compilazione: scelta della segnatura
B beta;
- beta.assegna(2)
Tre segnature candidate:
assegna(int x)assegna(double x)assegna(long x)
La piu specifica e assegna(int x)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 38 / 111
![Page 65: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/65.jpg)
Fase di compilazione: scelta della segnatura
B beta;
- beta.assegna(2)
Tre segnature candidate:
assegna(int x)assegna(double x)assegna(long x)
La piu specifica e assegna(int x)
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 38 / 111
![Page 66: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/66.jpg)
Ambiguita
Se per l’invocazione:
z(1, 2)
le segnature candidate sono:
z(double x, int y)z(int x, double y)
Il compilatore non e in grado di individuare la segnatura piu specifica esegnala un messaggio di errore
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 40 / 111
![Page 67: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/67.jpg)
Fase di esecuzione: scelta del metodo
La JVM sceglie il metodo da eseguire sulla base del tipo dell’oggetto usatonell’invocazione
cerca un metodo con la segnatura selezionata in fase di compilazione
risalendo la gerarchia delle classi a partire dalla classe dell’oggetto chedeve eseguire il metodo
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 41 / 111
![Page 68: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/68.jpg)
Fase di esecuzione: scelta del metodo
La JVM sceglie il metodo da eseguire sulla base del tipo dell’oggetto usatonell’invocazione
cerca un metodo con la segnatura selezionata in fase di compilazione
risalendo la gerarchia delle classi a partire dalla classe dell’oggetto chedeve eseguire il metodo
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 41 / 111
![Page 69: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/69.jpg)
Fase di esecuzione: scelta del metodo
La JVM sceglie il metodo da eseguire sulla base del tipo dell’oggetto usatonell’invocazione
cerca un metodo con la segnatura selezionata in fase di compilazione
risalendo la gerarchia delle classi a partire dalla classe dell’oggetto chedeve eseguire il metodo
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 41 / 111
![Page 70: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/70.jpg)
Esempio
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 42 / 111
![Page 71: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/71.jpg)
Esempio
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 43 / 111
![Page 72: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/72.jpg)
Esempio
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 44 / 111
![Page 73: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/73.jpg)
Esempio
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 45 / 111
![Page 74: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/74.jpg)
Il metodo equals
Classe Object: public boolean equals(Object o)
Basato sull’assunzione che un oggetto e uguale a se stesso.
public boolean equals(Object o) {return this == o;
}
Classe Frazione: public boolean equals(Frazione f)
public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 47 / 111
![Page 75: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/75.jpg)
Il metodo equals
Classe Object: public boolean equals(Object o)Basato sull’assunzione che un oggetto e uguale a se stesso.
public boolean equals(Object o) {return this == o;
}
Classe Frazione: public boolean equals(Frazione f)
public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 47 / 111
![Page 76: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/76.jpg)
Il metodo equals
Classe Object: public boolean equals(Object o)Basato sull’assunzione che un oggetto e uguale a se stesso.
public boolean equals(Object o) {return this == o;
}
Classe Frazione: public boolean equals(Frazione f)
public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 47 / 111
![Page 77: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/77.jpg)
Il metodo equals
Classe Object: public boolean equals(Object o)Basato sull’assunzione che un oggetto e uguale a se stesso.
public boolean equals(Object o) {return this == o;
}
Classe Frazione: public boolean equals(Frazione f)
public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 47 / 111
![Page 78: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/78.jpg)
Esempio
Frazione f1, f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 49 / 111
![Page 79: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/79.jpg)
Esempio
Frazione f1, f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 49 / 111
![Page 80: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/80.jpg)
Esempio
Object f1, f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 51 / 111
![Page 81: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/81.jpg)
Esempio
Object f1, f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 51 / 111
![Page 82: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/82.jpg)
Esempio
Object f1;Frazione f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 53 / 111
![Page 83: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/83.jpg)
Esempio
Object f1;Frazione f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 53 / 111
![Page 84: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/84.jpg)
Esempio
Frazione f1;Object f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 55 / 111
![Page 85: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/85.jpg)
Esempio
Frazione f1;Object f2;...if (f1.equals(f2))out.println("Le due frazioni sono uguali");
elseout.println("Le due frazioni sono diverse");
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 55 / 111
![Page 86: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/86.jpg)
Esempio
Se vogliamo che il comportamento sia corretto dobbiamo sovrascrivere ilmetodo equals(Object o) nella classe Frazione.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 56 / 111
![Page 87: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/87.jpg)
Esempio
Se vogliamo che il comportamento sia corretto dobbiamo sovrascrivere ilmetodo equals(Object o) nella classe Frazione.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 56 / 111
![Page 88: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/88.jpg)
I metodi equals di Frazione
public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;
}
public boolean equals(Object o) {if (o instanceof Frazione) {Frazione altra = (Frazione) o;return this.equals(altra);
} elsereturn false;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 58 / 111
![Page 89: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/89.jpg)
I metodi equals di Frazione
public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;
}
public boolean equals(Object o) {if (o instanceof Frazione) {Frazione altra = (Frazione) o;return this.equals(altra);
} elsereturn false;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 58 / 111
![Page 90: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/90.jpg)
Sommario: Estensione delle classi
1 Ereditarieta e implementazione di sottoclassiCostruttori e gerarchia delle classisuperOverloading e overridingIl metodo equals
2 Variabili e adombramento
3 Classi astratte
4 Implementazione della classe Rettangolo
5 Il modificatore protected
6 Il modificatore final
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 59 / 111
![Page 91: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/91.jpg)
Variabili e adombramento
public class Sopra {int k = 1;
public String toString() {return String.valueOf(k);
}}
public class Sotto extends Sopra {int k = 2;
public String toString() {return k + ", " + super.toString();
}}
Sotto: la variabile k adombra la variabile k di Sopra
La variabile utilizzata da un’istruzione dipende dal contesto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 61 / 111
![Page 92: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/92.jpg)
Variabili e adombramento
public class Sopra {int k = 1;
public String toString() {return String.valueOf(k);
}} public class Sotto extends Sopra {
int k = 2;
public String toString() {return k + ", " + super.toString();
}}
Sotto: la variabile k adombra la variabile k di Sopra
La variabile utilizzata da un’istruzione dipende dal contesto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 61 / 111
![Page 93: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/93.jpg)
Variabili e adombramento
public class Sopra {int k = 1;
public String toString() {return String.valueOf(k);
}} public class Sotto extends Sopra {
int k = 2;
public String toString() {return k + ", " + super.toString();
}}
Sotto: la variabile k adombra la variabile k di Sopra
La variabile utilizzata da un’istruzione dipende dal contesto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 61 / 111
![Page 94: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/94.jpg)
Variabili e adombramento
public class Sopra {int k = 1;
public String toString() {return String.valueOf(k);
}} public class Sotto extends Sopra {
int k = 2;
public String toString() {return k + ", " + super.toString();
}}
Sotto: la variabile k adombra la variabile k di Sopra
La variabile utilizzata da un’istruzione dipende dal contesto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 61 / 111
![Page 95: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/95.jpg)
super per accedere ai campi della superclasse
E possibile accedere al campo adombrato della superclasse mediantesuper (a patto che non sia private).
public class Sopra {int k = 1;
public String toString() {return String.valueOf(k);
}} public class Sotto extends Sopra {
int k = 2;
public String toString() {return k + ", " + super.k;
}}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 63 / 111
![Page 96: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/96.jpg)
super per accedere ai campi della superclasse
E possibile accedere al campo adombrato della superclasse mediantesuper (a patto che non sia private).
public class Sopra {int k = 1;
public String toString() {return String.valueOf(k);
}}
public class Sotto extends Sopra {int k = 2;
public String toString() {return k + ", " + super.k;
}}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 63 / 111
![Page 97: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/97.jpg)
super per accedere ai campi della superclasse
E possibile accedere al campo adombrato della superclasse mediantesuper (a patto che non sia private).
public class Sopra {int k = 1;
public String toString() {return String.valueOf(k);
}} public class Sotto extends Sopra {
int k = 2;
public String toString() {return k + ", " + super.k;
}}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 63 / 111
![Page 98: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/98.jpg)
Variabili e adombramento
//CAMPIprivate int ore;private int min;
public Orario(int ore, int min) {this.ore = ore;this.min = min;
}
I parametri formali adombrano i campi ore e min all’interno delcostruttore
this.ore specifica il campo dell’oggetto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 65 / 111
![Page 99: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/99.jpg)
Variabili e adombramento
//CAMPIprivate int ore;private int min;
public Orario(int ore, int min) {this.ore = ore;this.min = min;
}
I parametri formali adombrano i campi ore e min all’interno delcostruttore
this.ore specifica il campo dell’oggetto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 65 / 111
![Page 100: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/100.jpg)
Variabili e adombramento
//CAMPIprivate int x;
public void m(double y) {int x = (int)y.;this.x = y;
}
La variabile locale adombra il campo x all’interno del metodo
this.x specifica il campo dell’oggetto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 67 / 111
![Page 101: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/101.jpg)
Variabili e adombramento
//CAMPIprivate int x;
public void m(double y) {int x = (int)y.;this.x = y;
}
La variabile locale adombra il campo x all’interno del metodo
this.x specifica il campo dell’oggetto
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 67 / 111
![Page 102: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/102.jpg)
Sommario: Estensione delle classi
1 Ereditarieta e implementazione di sottoclassiCostruttori e gerarchia delle classisuperOverloading e overridingIl metodo equals
2 Variabili e adombramento
3 Classi astratte
4 Implementazione della classe Rettangolo
5 Il modificatore protected
6 Il modificatore final
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 68 / 111
![Page 103: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/103.jpg)
Classi astratte
Dichiarate mediante la parola chiave abstract prima di class
public abstract class Figura {...
}
Non e possibile costruire oggetti di una classe astratta
Una classe astratta puo avere tutti i membri di una classe concreta
I costruttori della classe astratta vengono utilizzati nella costruzione diun oggetto di una sottoclasse esattamente come per le classi concrete
Se una classe ha un metodo abstract allora deve essere dichiarataastratta
E possibile definire astratta una classe anche se non ha metodi astratti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 70 / 111
![Page 104: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/104.jpg)
Classi astratte
Dichiarate mediante la parola chiave abstract prima di class
public abstract class Figura {...
}
Non e possibile costruire oggetti di una classe astratta
Una classe astratta puo avere tutti i membri di una classe concreta
I costruttori della classe astratta vengono utilizzati nella costruzione diun oggetto di una sottoclasse esattamente come per le classi concrete
Se una classe ha un metodo abstract allora deve essere dichiarataastratta
E possibile definire astratta una classe anche se non ha metodi astratti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 70 / 111
![Page 105: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/105.jpg)
Classi astratte
Dichiarate mediante la parola chiave abstract prima di class
public abstract class Figura {...
}
Non e possibile costruire oggetti di una classe astratta
Una classe astratta puo avere tutti i membri di una classe concreta
I costruttori della classe astratta vengono utilizzati nella costruzione diun oggetto di una sottoclasse esattamente come per le classi concrete
Se una classe ha un metodo abstract allora deve essere dichiarataastratta
E possibile definire astratta una classe anche se non ha metodi astratti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 70 / 111
![Page 106: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/106.jpg)
Classi astratte
Dichiarate mediante la parola chiave abstract prima di class
public abstract class Figura {...
}
Non e possibile costruire oggetti di una classe astratta
Una classe astratta puo avere tutti i membri di una classe concreta
I costruttori della classe astratta vengono utilizzati nella costruzione diun oggetto di una sottoclasse esattamente come per le classi concrete
Se una classe ha un metodo abstract allora deve essere dichiarataastratta
E possibile definire astratta una classe anche se non ha metodi astratti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 70 / 111
![Page 107: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/107.jpg)
Classi astratte
Dichiarate mediante la parola chiave abstract prima di class
public abstract class Figura {...
}
Non e possibile costruire oggetti di una classe astratta
Una classe astratta puo avere tutti i membri di una classe concreta
I costruttori della classe astratta vengono utilizzati nella costruzione diun oggetto di una sottoclasse esattamente come per le classi concrete
Se una classe ha un metodo abstract allora deve essere dichiarataastratta
E possibile definire astratta una classe anche se non ha metodi astratti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 70 / 111
![Page 108: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/108.jpg)
Classi astratte
Dichiarate mediante la parola chiave abstract prima di class
public abstract class Figura {...
}
Non e possibile costruire oggetti di una classe astratta
Una classe astratta puo avere tutti i membri di una classe concreta
I costruttori della classe astratta vengono utilizzati nella costruzione diun oggetto di una sottoclasse esattamente come per le classi concrete
Se una classe ha un metodo abstract allora deve essere dichiarataastratta
E possibile definire astratta una classe anche se non ha metodi astratti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 70 / 111
![Page 109: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/109.jpg)
La classe Figura
public abstract class Figura {
public abstract double getArea();
public abstract double getPerimetro();
public boolean haAreaMaggiore(Figura altra) {return this.getArea() > altra.getArea();
}
public boolean haPerimetroMaggiore(Figura altra) {return this.getPerimetro() > altra.getPerimetro();
}}
Figura estende implicitamente Object
Ha un costruttore di default privo di argomenti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 72 / 111
![Page 110: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/110.jpg)
La classe Figura
public abstract class Figura {
public abstract double getArea();
public abstract double getPerimetro();
public boolean haAreaMaggiore(Figura altra) {return this.getArea() > altra.getArea();
}
public boolean haPerimetroMaggiore(Figura altra) {return this.getPerimetro() > altra.getPerimetro();
}}
Figura estende implicitamente Object
Ha un costruttore di default privo di argomenti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 72 / 111
![Page 111: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/111.jpg)
La classe Figura
public abstract class Figura {
public abstract double getArea();
public abstract double getPerimetro();
public boolean haAreaMaggiore(Figura altra) {return this.getArea() > altra.getArea();
}
public boolean haPerimetroMaggiore(Figura altra) {return this.getPerimetro() > altra.getPerimetro();
}}
Figura estende implicitamente Object
Ha un costruttore di default privo di argomenti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 72 / 111
![Page 112: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/112.jpg)
La classe Figura
public abstract class Figura {
public abstract double getArea();
public abstract double getPerimetro();
public boolean haAreaMaggiore(Figura altra) {return this.getArea() > altra.getArea();
}
public boolean haPerimetroMaggiore(Figura altra) {return this.getPerimetro() > altra.getPerimetro();
}}
Figura estende implicitamente Object
Ha un costruttore di default privo di argomenti
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 72 / 111
![Page 113: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/113.jpg)
Sommario: Estensione delle classi
1 Ereditarieta e implementazione di sottoclassiCostruttori e gerarchia delle classisuperOverloading e overridingIl metodo equals
2 Variabili e adombramento
3 Classi astratte
4 Implementazione della classe Rettangolo
5 Il modificatore protected
6 Il modificatore final
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 73 / 111
![Page 114: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/114.jpg)
Rettangolo: campi e costruttore
public class Rettangolo extends Figura {//CAMPIprivate double base, altezza;
//COSTRUTTORIpublic Rettangolo (double x, double y) {base = x;altezza = y;
}
//METODI...
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 75 / 111
![Page 115: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/115.jpg)
Rettangolo: campi e costruttore
public class Rettangolo extends Figura {//CAMPIprivate double base, altezza;
//COSTRUTTORIpublic Rettangolo (double x, double y) {base = x;altezza = y;
}
//METODI...
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 75 / 111
![Page 116: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/116.jpg)
Implementazione dei metodi astratti di Figura
public double getArea() {return base * altezza;
}
public double getPerimetro() {return 2 * (base + altezza);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 77 / 111
![Page 117: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/117.jpg)
Implementazione dei metodi astratti di Figura
public double getArea() {return base * altezza;
}
public double getPerimetro() {return 2 * (base + altezza);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 77 / 111
![Page 118: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/118.jpg)
Rettangolo: metodi di accesso e toString
public double getAltezza() {return altezza;
}
public double getBase() {return base;
}
public String toString() {return "base = " + base + ", altezza = " + altezza;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 79 / 111
![Page 119: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/119.jpg)
Rettangolo: metodi di accesso e toString
public double getAltezza() {return altezza;
}
public double getBase() {return base;
}
public String toString() {return "base = " + base + ", altezza = " + altezza;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 79 / 111
![Page 120: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/120.jpg)
Rettangolo: metodi di accesso e toString
public double getAltezza() {return altezza;
}
public double getBase() {return base;
}
public String toString() {return "base = " + base + ", altezza = " + altezza;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 79 / 111
![Page 121: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/121.jpg)
Rettangolo: metodi equals
public boolean equals(Rettangolo altro) {return this.base == altro.base &&
this.altezza == altro.altezza;}
public boolean equals(Object o) {if (o instanceof Rettangolo) {Rettangolo a = (Rettangolo) o;return equals(a);
} elsereturn false;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 81 / 111
![Page 122: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/122.jpg)
Rettangolo: metodi equals
public boolean equals(Rettangolo altro) {return this.base == altro.base &&
this.altezza == altro.altezza;}
public boolean equals(Object o) {if (o instanceof Rettangolo) {Rettangolo a = (Rettangolo) o;return equals(a);
} elsereturn false;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 81 / 111
![Page 123: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/123.jpg)
I metodi equals di Quadrato
Quadrato eredita i metodi da Rettangolo
Rettangolo r = new Rettangolo(4, 4);Quadrato q = new Quadrato(4);if (q.equals(r))out.println("uguali");
elseout.println("diversi");
Dal punto di vista della gerarchia gli oggetti riferiti da r e da q sonodiversi, dal punto di vista geometrico rappresentano la stessa figura
Privilegiamo il punto di vista geometrico
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 83 / 111
![Page 124: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/124.jpg)
I metodi equals di Quadrato
Quadrato eredita i metodi da Rettangolo
Rettangolo r = new Rettangolo(4, 4);Quadrato q = new Quadrato(4);if (q.equals(r))out.println("uguali");
elseout.println("diversi");
Dal punto di vista della gerarchia gli oggetti riferiti da r e da q sonodiversi, dal punto di vista geometrico rappresentano la stessa figura
Privilegiamo il punto di vista geometrico
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 83 / 111
![Page 125: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/125.jpg)
I metodi equals di Quadrato
Quadrato eredita i metodi da Rettangolo
Rettangolo r = new Rettangolo(4, 4);Quadrato q = new Quadrato(4);if (q.equals(r))out.println("uguali");
elseout.println("diversi");
Dal punto di vista della gerarchia gli oggetti riferiti da r e da q sonodiversi, dal punto di vista geometrico rappresentano la stessa figura
Privilegiamo il punto di vista geometrico
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 83 / 111
![Page 126: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/126.jpg)
I metodi equals di Quadrato
Quadrato eredita i metodi da Rettangolo
Rettangolo r = new Rettangolo(4, 4);Quadrato q = new Quadrato(4);if (q.equals(r))out.println("uguali");
elseout.println("diversi");
Dal punto di vista della gerarchia gli oggetti riferiti da r e da q sonodiversi, dal punto di vista geometrico rappresentano la stessa figura
Privilegiamo il punto di vista geometrico
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 83 / 111
![Page 127: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/127.jpg)
Rettangolo: cambiaBase
public void cambiaBase(double x) {base = x;return;
}
L’istruzione return puo essere omessa
public void cambiaBase(double x) {base = x;
}
public void cambiaAltezza(double x) {altezza = x;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 85 / 111
![Page 128: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/128.jpg)
Rettangolo: cambiaBase
public void cambiaBase(double x) {base = x;return;
}
L’istruzione return puo essere omessa
public void cambiaBase(double x) {base = x;
}
public void cambiaAltezza(double x) {altezza = x;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 85 / 111
![Page 129: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/129.jpg)
Rettangolo: cambiaBase
public void cambiaBase(double x) {base = x;return;
}
L’istruzione return puo essere omessa
public void cambiaBase(double x) {base = x;
}
public void cambiaAltezza(double x) {altezza = x;
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 85 / 111
![Page 130: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/130.jpg)
Quadrato: metodo cambiaLato
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Quadrato eredita da Rettangolo anche i metodi cambiaBase ecambiaAltezza
L’uso di questi metodi consente di costruire oggetti inconsistenti
Quadrato q = new Quadrato(4);q.cambiaBase(3);double area = q.getArea(); //area = 12
Li ridefiniamo in modo che questo non avvenga
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 87 / 111
![Page 131: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/131.jpg)
Quadrato: metodo cambiaLato
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Quadrato eredita da Rettangolo anche i metodi cambiaBase ecambiaAltezza
L’uso di questi metodi consente di costruire oggetti inconsistenti
Quadrato q = new Quadrato(4);q.cambiaBase(3);double area = q.getArea(); //area = 12
Li ridefiniamo in modo che questo non avvenga
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 87 / 111
![Page 132: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/132.jpg)
Quadrato: metodo cambiaLato
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Quadrato eredita da Rettangolo anche i metodi cambiaBase ecambiaAltezza
L’uso di questi metodi consente di costruire oggetti inconsistenti
Quadrato q = new Quadrato(4);q.cambiaBase(3);double area = q.getArea(); //area = 12
Li ridefiniamo in modo che questo non avvenga
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 87 / 111
![Page 133: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/133.jpg)
Quadrato: metodo cambiaLato
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Quadrato eredita da Rettangolo anche i metodi cambiaBase ecambiaAltezza
L’uso di questi metodi consente di costruire oggetti inconsistenti
Quadrato q = new Quadrato(4);q.cambiaBase(3);double area = q.getArea(); //area = 12
Li ridefiniamo in modo che questo non avvenga
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 87 / 111
![Page 134: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/134.jpg)
Quadrato: getBase, getAltezza
public void cambiaBase(double x) {cambiaLato(x);
}
public void cambiaAltezza(double x) {cambiaLato(x);
}
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Problema
I metodi si richiamano tra loro all’infinito.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 89 / 111
![Page 135: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/135.jpg)
Quadrato: getBase, getAltezza
public void cambiaBase(double x) {cambiaLato(x);
}
public void cambiaAltezza(double x) {cambiaLato(x);
}
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Problema
I metodi si richiamano tra loro all’infinito.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 89 / 111
![Page 136: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/136.jpg)
Quadrato: getBase, getAltezza
public void cambiaBase(double x) {cambiaLato(x);
}
public void cambiaAltezza(double x) {cambiaLato(x);
}
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Problema
I metodi si richiamano tra loro all’infinito.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 89 / 111
![Page 137: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/137.jpg)
Quadrato: getBase, getAltezza
public void cambiaBase(double x) {cambiaLato(x);
}
public void cambiaAltezza(double x) {cambiaLato(x);
}
public void cambiaLato(double x) {cambiaBase(x);cambiaAltezza(x);
}
Problema
I metodi si richiamano tra loro all’infinito.
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 89 / 111
![Page 138: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/138.jpg)
Quadrato: getBase, getAltezza
public void cambiaBase(double x) {cambiaLato(x);
}
public void cambiaAltezza(double x) {cambiaLato(x);
}
public void cambiaLato(double x) {super.cambiaBase(x);super.cambiaAltezza(x);
}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 91 / 111
![Page 139: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/139.jpg)
protected
Il suo significato e legato all’ereditarieta
All’interno di un package il modificatore protected e equivalente adamichevole
All’esterno del package i membri protected di una classe A sonovisibili solo:
nel corpo delle classi B che la estendono
da un riferimento che sia al piu del tipo di B
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 93 / 111
![Page 140: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/140.jpg)
protected
Il suo significato e legato all’ereditarieta
All’interno di un package il modificatore protected e equivalente adamichevole
All’esterno del package i membri protected di una classe A sonovisibili solo:
nel corpo delle classi B che la estendono
da un riferimento che sia al piu del tipo di B
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 93 / 111
![Page 141: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/141.jpg)
protected
Il suo significato e legato all’ereditarieta
All’interno di un package il modificatore protected e equivalente adamichevole
All’esterno del package i membri protected di una classe A sonovisibili solo:
nel corpo delle classi B che la estendono
da un riferimento che sia al piu del tipo di B
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 93 / 111
![Page 142: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/142.jpg)
Sommario: Estensione delle classi
1 Ereditarieta e implementazione di sottoclassiCostruttori e gerarchia delle classisuperOverloading e overridingIl metodo equals
2 Variabili e adombramento
3 Classi astratte
4 Implementazione della classe Rettangolo
5 Il modificatore protected
6 Il modificatore final
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 94 / 111
![Page 143: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/143.jpg)
final
Il modificatore final puo essere applicato alle variabili, ai metodi ealle classi
Ha significati differenti a seconda del contesto in cui compare
In generale stabilisce che cio che e associato all’identificatore cui eapplicato non puo essere modificato
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 96 / 111
![Page 144: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/144.jpg)
final
Il modificatore final puo essere applicato alle variabili, ai metodi ealle classi
Ha significati differenti a seconda del contesto in cui compare
In generale stabilisce che cio che e associato all’identificatore cui eapplicato non puo essere modificato
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 96 / 111
![Page 145: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/145.jpg)
final
Il modificatore final puo essere applicato alle variabili, ai metodi ealle classi
Ha significati differenti a seconda del contesto in cui compare
In generale stabilisce che cio che e associato all’identificatore cui eapplicato non puo essere modificato
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 96 / 111
![Page 146: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/146.jpg)
final applicato a variabili
final puo essere applicato alle variabili:
campicampi staticivariabili localiparametri formali
Una variabile final e una variabile alla quale e possibile assegnare unvalore una sola volta
Nel codice che la utilizza il valore della variabile e quindi costante
Un tentativo di modificare la variabile dopo che le e stato assegnatoun valore da luogo a un errore in fase di compilazione
Convenzione: per le variabili final si utilizzano nomi in maiuscolo, inmodo da evidenziarne la peculiarita
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 98 / 111
![Page 147: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/147.jpg)
final applicato a variabili
final puo essere applicato alle variabili:
campicampi staticivariabili localiparametri formali
Una variabile final e una variabile alla quale e possibile assegnare unvalore una sola volta
Nel codice che la utilizza il valore della variabile e quindi costante
Un tentativo di modificare la variabile dopo che le e stato assegnatoun valore da luogo a un errore in fase di compilazione
Convenzione: per le variabili final si utilizzano nomi in maiuscolo, inmodo da evidenziarne la peculiarita
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 98 / 111
![Page 148: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/148.jpg)
final applicato a variabili
final puo essere applicato alle variabili:
campicampi staticivariabili localiparametri formali
Una variabile final e una variabile alla quale e possibile assegnare unvalore una sola volta
Nel codice che la utilizza il valore della variabile e quindi costante
Un tentativo di modificare la variabile dopo che le e stato assegnatoun valore da luogo a un errore in fase di compilazione
Convenzione: per le variabili final si utilizzano nomi in maiuscolo, inmodo da evidenziarne la peculiarita
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 98 / 111
![Page 149: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/149.jpg)
final applicato a variabili
final puo essere applicato alle variabili:
campicampi staticivariabili localiparametri formali
Una variabile final e una variabile alla quale e possibile assegnare unvalore una sola volta
Nel codice che la utilizza il valore della variabile e quindi costante
Un tentativo di modificare la variabile dopo che le e stato assegnatoun valore da luogo a un errore in fase di compilazione
Convenzione: per le variabili final si utilizzano nomi in maiuscolo, inmodo da evidenziarne la peculiarita
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 98 / 111
![Page 150: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/150.jpg)
final applicato a variabili
final puo essere applicato alle variabili:
campicampi staticivariabili localiparametri formali
Una variabile final e una variabile alla quale e possibile assegnare unvalore una sola volta
Nel codice che la utilizza il valore della variabile e quindi costante
Un tentativo di modificare la variabile dopo che le e stato assegnatoun valore da luogo a un errore in fase di compilazione
Convenzione: per le variabili final si utilizzano nomi in maiuscolo, inmodo da evidenziarne la peculiarita
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 98 / 111
![Page 151: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/151.jpg)
final: variabili locali
Si puo assegnare loro il valore in fase di dichiarazione o in unmomento successivo.
final int X;final int Y = 2;X = Y + 1;
Nel caso delle variabili riferimento cio che risulta immodificabile e ilriferimento non l’oggetto.
Non viene compilato
final String STRINGA = "pippo";STRINGA = STRINGA.toUpperCase();
Compilato
final Rettangolo RETTANGOLO = new Rettangolo(2,3);RETTANGOLO.cambiaBase(4);
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 100 / 111
![Page 152: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/152.jpg)
final: variabili locali
Si puo assegnare loro il valore in fase di dichiarazione o in unmomento successivo.
final int X;final int Y = 2;X = Y + 1;
Nel caso delle variabili riferimento cio che risulta immodificabile e ilriferimento non l’oggetto.
Non viene compilato
final String STRINGA = "pippo";STRINGA = STRINGA.toUpperCase();
Compilato
final Rettangolo RETTANGOLO = new Rettangolo(2,3);RETTANGOLO.cambiaBase(4);
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 100 / 111
![Page 153: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/153.jpg)
final: variabili locali
Si puo assegnare loro il valore in fase di dichiarazione o in unmomento successivo.
final int X;final int Y = 2;X = Y + 1;
Nel caso delle variabili riferimento cio che risulta immodificabile e ilriferimento non l’oggetto.
Non viene compilato
final String STRINGA = "pippo";STRINGA = STRINGA.toUpperCase();
Compilato
final Rettangolo RETTANGOLO = new Rettangolo(2,3);RETTANGOLO.cambiaBase(4);
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 100 / 111
![Page 154: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/154.jpg)
final: parametri formali
public void f(final int X) {...}
A X viene assegnato un valore al momento dell’invocazione del metodo
All’interno del codice del metodo X risulta immodificabile
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 102 / 111
![Page 155: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/155.jpg)
final: parametri formali
public void f(final int X) {...}
A X viene assegnato un valore al momento dell’invocazione del metodo
All’interno del codice del metodo X risulta immodificabile
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 102 / 111
![Page 156: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/156.jpg)
final: parametri formali
public void f(final int X) {...}
A X viene assegnato un valore al momento dell’invocazione del metodo
All’interno del codice del metodo X risulta immodificabile
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 102 / 111
![Page 157: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/157.jpg)
final: campi statici
Il valore puo essere assegnato solo in fase di definizione
Ai campi statici viene assegnato un valore all’atto della creazioneanche in mancanza di un’inizializzazione esplicita
class A {static final int MAX_OGGETTI = 10;
...}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 104 / 111
![Page 158: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/158.jpg)
final: campi statici
Il valore puo essere assegnato solo in fase di definizione
Ai campi statici viene assegnato un valore all’atto della creazioneanche in mancanza di un’inizializzazione esplicita
class A {static final int MAX_OGGETTI = 10;
...}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 104 / 111
![Page 159: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/159.jpg)
final: campi statici
Il valore puo essere assegnato solo in fase di definizione
Ai campi statici viene assegnato un valore all’atto della creazioneanche in mancanza di un’inizializzazione esplicita
class A {static final int MAX_OGGETTI = 10;
...}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 104 / 111
![Page 160: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/160.jpg)
final: campi
E possibile assegnare il valore in fase di definizione, oppure all’internodei costruttori
I campi final privi di una inizializzazione esplicita sono chiamatiblank-final
I blank-final devono essere obbligatoriamente inizializzati all’interno ditutti i costruttori della classe
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 106 / 111
![Page 161: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/161.jpg)
final: campi
E possibile assegnare il valore in fase di definizione, oppure all’internodei costruttori
I campi final privi di una inizializzazione esplicita sono chiamatiblank-final
I blank-final devono essere obbligatoriamente inizializzati all’interno ditutti i costruttori della classe
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 106 / 111
![Page 162: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/162.jpg)
final: campi
E possibile assegnare il valore in fase di definizione, oppure all’internodei costruttori
I campi final privi di una inizializzazione esplicita sono chiamatiblank-final
I blank-final devono essere obbligatoriamente inizializzati all’interno ditutti i costruttori della classe
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 106 / 111
![Page 163: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/163.jpg)
Esempio
public class A {final int C = 0;final int D;
public A() {D = 1;
}
public A(int x) {D = x;
}
public String toString() {return C + ", " + D;
}}
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 108 / 111
![Page 164: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/164.jpg)
final: metodi
Stabilisce che il metodo non puo essere ridefinito dalle estensioni dellaclasse
Meccanismo utilizzato per impedire alle sottoclassi di cambiarne ilsignificato
I metodi final assicurano anche una maggiore efficienza, perche lagaranzia che non possono essere ridefiniti consente al compilatore ditrattarli in modo diverso dagli altri metodi
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 109 / 111
![Page 165: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/165.jpg)
final: metodi
Stabilisce che il metodo non puo essere ridefinito dalle estensioni dellaclasse
Meccanismo utilizzato per impedire alle sottoclassi di cambiarne ilsignificato
I metodi final assicurano anche una maggiore efficienza, perche lagaranzia che non possono essere ridefiniti consente al compilatore ditrattarli in modo diverso dagli altri metodi
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 109 / 111
![Page 166: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/166.jpg)
final: metodi
Stabilisce che il metodo non puo essere ridefinito dalle estensioni dellaclasse
Meccanismo utilizzato per impedire alle sottoclassi di cambiarne ilsignificato
I metodi final assicurano anche una maggiore efficienza, perche lagaranzia che non possono essere ridefiniti consente al compilatore ditrattarli in modo diverso dagli altri metodi
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 109 / 111
![Page 167: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/167.jpg)
final: classi
Specifica che non possono essere estese
Utilizzato per questioni di sicurezza ed efficienza
Esempi di classi final di Java sono la classe String e le classiinvolucro
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 111 / 111
![Page 168: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/168.jpg)
final: classi
Specifica che non possono essere estese
Utilizzato per questioni di sicurezza ed efficienza
Esempi di classi final di Java sono la classe String e le classiinvolucro
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 111 / 111
![Page 169: Estensione delle classi - Capitolo 8 · 2011. 3. 31. · Quadrato `e una sottoclasse di Rettangolo Rettangolo `e una superclasse di Quadrato c 2005 Pearson Education Italia Capitolo](https://reader033.vdocuments.pub/reader033/viewer/2022053123/60ac3aa1612e310b4645e91c/html5/thumbnails/169.jpg)
final: classi
Specifica che non possono essere estese
Utilizzato per questioni di sicurezza ed efficienza
Esempi di classi final di Java sono la classe String e le classiinvolucro
c© 2005 Pearson Education Italia Capitolo 8 - Estensione delle classi 111 / 111