View Full Version : [JAVA] Domanda sulle classi abstract
Rintrah84
10-07-2009, 17:09
Se ho una classe abstract che mi descrive un supertipo da cui derivo vari sottotipi.
Nelle classi che estendono la classe abstract posso mettere dei metodi in più che non sono stati dichiarati nella classe abstract?
Grazie
Andrea
banryu79
10-07-2009, 17:14
Se ho una classe abstract che mi descrive un supertipo da cui derivo vari sottotipi.
Nelle classi che estendono la classe abstract posso mettere dei metodi in più che non sono stati dichiarati nella classe abstract?
Grazie
Andrea
Sì.
Tutti i sottotipi concreti del tuo supertipo abstract avranno in comune il fatto di implementare tutti i metodi abstract del supertipo e anche di ereditare gli eventuali altri metodi concreti definiti nel supertipo; ogni sottotipo poi, può eventualmente fare override di quanti metodi concreti del supertipo desideri nonchè definire nuovi metodi che solo lui possiede.
Rintrah84
10-07-2009, 17:17
Sì.
Tutti i sottotipi concreti del tuo supertipo abstract avranno in comune il fatto di implementare tutti i metodi abstract del supertipo e anche di ereditare gli eventuali altri metodi concreti definiti nel supertipo; ogni sottotipo poi, può eventualmente fare override di quanti metodi concreti del supertipo desideri nonchè definire nuovi metodi che solo lui possiede.
ah ok...grazie di avermi rinfrescato la memoria.
Correggimi se sbaglio...per fare l'override in Java non basta che la signature sia uguale,anche il tipo di ritorno deve essere lo stesso...giusto?
Matita48
10-07-2009, 20:28
Ciao a tutti sono nuovo del forum.
Per quanto riguarda l'override dei metodi :in java puoi fare l'override in una classe derivata di un metodo di una classe padre se il metodo rispetta la signature sia a livello di parametri sia sul tipo restituito.
Con java 5 è però possibile fare l'override di un metodo modificando il tipo di ritorno purché anche il tipo restituito sia una sottoclasse del tipo restituito nel metodo della classe padre:
//classe padre
public Object doSomething(Object o){...}
//classe figlia
public String doSomething(Object o){...}
Da java 5 in poi si può fare...
Questa è una curiosità che ha da poco scoperto...
banryu79
13-07-2009, 08:05
ah ok...grazie di avermi rinfrescato la memoria.
Correggimi se sbaglio...per fare l'override in Java non basta che la signature sia uguale,anche il tipo di ritorno deve essere lo stesso...giusto?
e
Da java 5 in poi si può fare...
Questa è una curiosità che ha da poco scoperto...
Si può fare da Java 5 in poi perchè con Java 5 sono stati introdotti a livello di linguaggio i Generics e i metodi sono diventati covarianti.
Se vi interessa approfondire, nella sezione tutorial del forum, sotto Java, autore PGI-bis, c'è un tutorial al riguardo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.