15.06.2013 Views

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

7.8.1 Diamond Inheritance Problem<br />

Carnielli Efrem: Programmazione a componenti<br />

Def<strong>in</strong>izione ed uso <strong>di</strong> classi, oggetti ed <strong>in</strong>terfacce<br />

Ora vedremo l’ere<strong>di</strong>tà multipla <strong>di</strong> classe che prende il nome <strong>di</strong> Diamond Inheritance<br />

Problem, per il modo <strong>di</strong> visualizzare le classi che assomiglia a un <strong>di</strong>amante.<br />

f<br />

g<br />

><br />

f<br />

g<br />

h<br />

<br />

B C<br />

Figura 7.16. Diamond problem: Ere<strong>di</strong>tà multipla <strong>di</strong> classe<br />

D<br />

f<br />

g<br />

><br />

L’ere<strong>di</strong>tarietà multipla <strong>di</strong> classe non è permessa <strong>in</strong> Java, per una serie <strong>di</strong> problemi<br />

che comporta e che ci apprestiamo a del<strong>in</strong>eare.<br />

Sia o istanza <strong>di</strong> B e d <strong>di</strong> D. Le funzioni f e g vengono ridef<strong>in</strong>ite sia <strong>in</strong> B che <strong>in</strong> C. La<br />

chiamata o.f(...) fa riferimento alla f implementata da B. L’oggetto d è tipo D,B,C e<br />

A. Se faccio d.f(...) quale co<strong>di</strong>ce <strong>di</strong> f mando <strong>in</strong> esecuzione? Non lo posso sapere,<br />

qu<strong>in</strong><strong>di</strong> non posso fare la chiamata. Per questo motivo Java non permette questo<br />

tipo <strong>di</strong> ere<strong>di</strong>tarietà, a meno <strong>di</strong> due cose:<br />

• Mix<strong>in</strong>: consente <strong>di</strong> ere<strong>di</strong>tare da due classi, se non hanno un’ <strong>in</strong>terfaccia<br />

179

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!