Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    ClassLoader di classi final?

    Salve, Ho da poco conosciuto i ClassLoader e avrei una domanda. E' possibile fare l'Override di un metodo alli interno di una classe final?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non ho capito cosa c'entra il ClassLoader con l'override dei metodi e non è chiaro il quesito.
    Cosa intendi, esattamente, con "override di un metodo all'interno di una classe final?"

    Una classe final, per definizione, non può essere estesa... quindi non può esistere una classe che effettui l'override di un metodo di una classe final.

    Se, invece, stai chiedendo se una classe final può effettuare l'override di un metodo di una sua superclasse, la risposta è sì e questo a prescindere dal fatto che essa sia final o meno...

    Continua a non essermi chiaro cosa c'entri il ClassLoader.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gamerover98 Visualizza il messaggio
    Salve, Ho da poco conosciuto i ClassLoader e avrei una domanda. E' possibile fare l'Override di un metodo alli interno di una classe final?
    Data una class B extends A , all'interno di B puoi fare l'override di un metodo di istanza presente nella classe A a patto che il metodo di A sia "visibile" (abbia un livello di accesso tale che sia visibile alla sottoclasse) e non sia final.
    Che la classe B sia final o no, non conta per questo. Se invece la classe A fosse final allora non potresti nemmeno fare il extends.

    Ah, il metodo in B (quello che fa l'override) può essere final.

    P.S. Tutto questo però non c'entra nulla con i Classloader
    Ultima modifica di andbin; 29-12-2015 a 19:18
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Come ha giustamente puntualizzato andbin, la classe B può effettuare l'override di un metodo in A purchè questo sia visibile e non sia final... ho tralasciato questo dettaglio perchè mi pare di capire che il dubbio fosse sulle classi final, non sui metodi final.

    Ad ogni modo ora hai una panoramica più completa.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Grazie per aver risposto. In parole povere devo modificare un metodo in una classe che però è final per cambiarne il suo funzionamento.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gamerover98 Visualizza il messaggio
    devo modificare un metodo in una classe che però è final per cambiarne il suo funzionamento.
    Non puoi.

    P.S. di quale classe si tratta?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Non so, mi sembra strano... Una volta l'ho visto fare. Va be mi arrangerò

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gamerover98 Visualizza il messaggio
    Non so, mi sembra strano... Una volta l'ho visto fare. Va be mi arrangerò
    Puoi/vuoi chiarire il contesto? Se una classe è final non la puoi estendere quindi nemmeno fare override dei suoi metodi. Dipende cosa vuoi fare .. perché ...

    Tieni anche presente che se la classe final che in teoria vorresti estendere implementa una certa interfaccia o al limite estende una classe (insomma, che ci sia un super-tipo) e l'unica cosa che conta è la "visione" delle funzionalità attraverso la interfaccia (o ripeto, super-tipo in generale), allora sarebbe possibile applicare il pattern "Decorator". Cioè puoi creare un decoratore che incapsula un oggetto della classe final, potendo passare e/o modificare le invocazioni verso l'oggetto decorato.

    Il "Decorator" infatti è definibile come una sorta di estensione a runtime.
    Ultima modifica di andbin; 29-12-2015 a 20:04
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Scusami ma non ci ho capito nulla

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gamerover98 Visualizza il messaggio
    Scusami ma non ci ho capito nulla
    Di quello che ho detto sul "Decorator"? Vedi https://it.wikipedia.org/wiki/Decorator
    Se non fosse ancora chiaro, facciamo un esempio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.