Newsgroup: it.comp.java
Titolo: Classi astratte e interfacce

Buongiorno a tutti.
La mia è una domanda non dettata da un problema reale, ma dalla mia
curiosità sulla filosofia che c'è dietro java, ed è la seguente: perchè
esistono sia le interfacce che le classi astratte? Sò qual è la
differenza che c'è tra le due cose, che le interfacce sono il modo in
cui java implementa l'ereditarietà multipla, ma mi sfugge il ruolo delle
classi astratte.
Altro mio dubbio riguarda un contrasto che noto tra la teoria di java
(quella che si trova sui libri) e la pratica: teoria-le interfacce hanno
solo la segnatura dei metodi senza la loro implementazione, e per essere
istanziate devono essere implementate da una classe che ne ridefinisca
tutti i metodi;pratica-interfacce come ResultSet vengono istanziate,non
con il costruttore ma cmq con metodi che permettono di avere un oggetto
di queste interfacce(nel caso di ResultSet executeQuery di Statement), e
hanno metodi che mi sembrano tutt'altro che astratti visto che hanno
delle funzionalità(vedi next() e getXXX()).
Se ho scritto una marea di cazzate ditemelo e non lasciatemi alle mie
false convinzioni, in caso contrario non lasciatemi in questa valle di
dubbi.
Ciaooooo!!!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 pratica-interfacce come ResultSet vengono istanziate,non
No, tu istanzi una classe che implementa ResultSet, e che vien
implementata dal driver, pertanto che la classe sia
IlMioDriverResultSet, non ha alcuna importanza, perche' tu puoi
"vederla" e "chiamarla" come se fosse ResultSet, in questo modo
eviti di spaccarti il XXXX a cambiare il codice se cambi driver.
Davide


>ancora)


>>ancora)
Idem. Prova a ottenere un'Enumeration e e scrivere
System.out.println(e.getClass());
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 esistono sia le interfacce che le classi astratte? 
http://groups.google.com/groups?oi=djq&selm=an_546588244
('azz, devo ancora metterla in FAQ. lo faccio subito :).


>Intanto potresti rispondere a me!


 
Clicca-sul-link-sopra-la-parentesi. 
:-)


>Possibile che non posso levatmi questi dubbi?


 >>Possibile che non posso levatmi questi dubbi?
La differenza più grossa tra classe astratta e interfaccia sta nel fatto
che la classe astratta è una classe di cui esisto delle istanze
indirrette mentre le interfaccie non sono classi non esistono istanze
delle interfaccie. Quelle che tu supponevi sulla ereditarietà
multipla,cioè che le interfaccie servono per implementare l'ereditarietà
multipla è sbagliatissimo,l'usare le interfaccie per l'ereditarietà è un
grave errore semantico,chi usa le interfaccie per le ereditarietà
multiple non ci capiste un cazzo di propgrammazione. Java non supporta
l'ereditarietà multipla e basta, poi ci sono delle trasfromazioni a
livello UML che posso essere fatte per evitare l'ereditarietà multipla.
TI faccio un esempio di come si usa una classe astratta.
per esempio devi modellare delle persone(Comunitarie e
Extracomunitarie)e calcolare la aliquota, la aliquota si calcola in
maniera diversa per Comunitari ed Exstracomunitari quindi una soluzione
potrebbe essere:
Public class Persona{
private string nome;
etc...
protected int calcola_aliquota();
]
Public class Persona_Comunitaria{
...
protected int calcola_aliquota(){
return redditoan*2 //esempio banale]
]
Public class Persona_ExtraComunitaria{
...
protected int calcola_aliquota(){
return redditoan*1.3 //esempio banale]
]


> Public class abstarct Persona_Comunitaria{
Errata Corrige


 livello UML che posso essere fatte per evitare l'ereditarietą multipla.
Potresti spiegarti meglio o farmi dei link su questo argomento?
Grazie mille.
Ciao
Franco

 grave errore semantico... 
 E allora per quale ragione esistono?Uno degli esempi classici che si
 trova su tutti i manuali è quello dell' implementazione dei thread 
 che può essere fatta estendendo la classe thread o, nel caso avessimo
 necessità di estendere qualche altra classe, implementando
l'interfaccia
 Runnable.In questo caso mi pare evidente la multieredità...


 wrote in message
news:ea8a4b166c4e208bb69...@mygate.mailgate.org...
Io sto ancora aspettando una risposta esauriente.
