Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568

    [java] differenza iinterfaccia - extends

    mi dite che differenza c'è tra questi 2 concetti ???
    cioè, extend mi sembra più potente..
    eredito i metodi e le variabili già inizializzate...
    mentre con implements catturo solo le dichiarazioni, ma non è inizializzato nulla, giusto ??

    non capisco :master:
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  2. #2
    Puoi estendere una sola classe, ma di interfacce puoi implementarne anche cento.
    Non e' un semplice ereditare le dichiarazioni: un oggetto che implementa l'interfaccia "Telecomando" e' (anche) un oggetto (di classe) "Telecomando" e questo e' importante nel polimorfismo.
    Se ho una funzione che prende paramentri "Telecomando", posso passargli il mio oggetto che implementa l'interfaccia "Telecomando", cosi' come un oggetto completamente diverso, ma che implementa la stessa interfaccia!
    Non sono stato granche chiaro, eh? :rollo:
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da dekdek
    Puoi estendere una sola classe, ma di interfacce puoi implementarne anche cento.
    Non e' un semplice ereditare le dichiarazioni: un oggetto che implementa l'interfaccia "Telecomando" e' (anche) un oggetto (di classe) "Telecomando" e questo e' importante nel polimorfismo.
    Se ho una funzione che prende paramentri "Telecomando", posso passargli il mio oggetto che implementa l'interfaccia "Telecomando", cosi' come un oggetto completamente diverso, ma che implementa la stessa interfaccia!
    Non sono stato granche chiaro, eh? :rollo:

    ....più confuso di prima... !!!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  4. #4
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Tratto da un articolo di Sciabarrà:

    mettiamo caso tu abbia un oggetto Acquario che può acettare solo oggetti Pesce, PesceRosso estende pesce quindi è anche un Pesce, un caso particolare di Pesce quindi può entrare nell'acquario; poi mettiamo caso tu abbia un oggetto Granchio, che però estende già Crostaceo, non supportando l'ereditarietà multipla in Java non puoi far estendere anche Pesce al Granchio, quindi fai accettare all'acquario dei Nuotatori, crei l'interfaccia nuotatore col metodo Nuota da applicare a tutti gli esseri che vogliono entrare nell'acqario, ogni essere nuoterà in modo diverso implementando il metodo.


    Un'interfaccia alla fin fine è il massimo dell'astrazione, talmente astratta che non può avere vincoli nella sua implementazione, ciò significa che il metodo nuota lo potresti applicare pure ad un sub tanto è astratto, la classe Pesce è sempre astratta ma nei casi reali può vincolare; ad esempio quando estendi Thread la tua classe sarà un Thread, quando implementi Runnable sarà abilitata per far correre un thread, sarà un corridore di thread.

    Riassumendo, quando estendi una classe l'oggetto derivato è un caso particolare della classe generale, quando crei un interfaccia dici cosa dovrà fare l'oggetto ma non come.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    extends si usa per estendere una classe esistende, ereditandone tutte le funzionalità non private.

    implements serve per far si che una classe acquisisca il tipo di un interfaccia:

    class A implements B, C, D
    {
    }

    la classe A dovrà impegnarsi ad implementare le interfacce specificate da B, C e D; in questo modo un oggetto di tipo A può essere usato ovunque serva un oggetto di tipo B o C o D (con le interfacce si relazza una sorta di ereditarietà multipla).

    In generale dichiari un interfaccia ogni volta che ti interessa definire la funzionalità di una classe, senza definire il modo in cui tali funzionalità devono essere implementate.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se hai due classi ProgrammatoreJava e ProgrammatoreC entrambe dovranno avere un metodo scriviQualcosa, ma le implemetazioni del metodo sono diverse
    si fa un'interfaccia Programmatore che contiene la dichiarazione di scriviQualcosa e si creano le classi che implemetano l'interfaccia
    quindi le istanze di ProgrammatoreJava e ProgrammatoreC avranno il loro scriviQualcosa che esegue azioni in base alla loro necessità
    se hai un oggetto di una di queste due classi sicuramente implementa Programmatore e potrai chiamare il metodo

    + chiaro di così non mi riesce

  7. #7
    Presumo che il discorso su "estendi una sola classe, implementi quante interfacce ti pare" sia chiaro...

    Un oggetto non appartiene solo alla classe di cui e' istanza, ma anche alla superclasse (la classe che estende), e alle superclassi della superclasse (e cosi' via). Esempio: un "Lavoratore Dipendente" e' anche un "Lavoratore", ma anche una "Persona", e un "Essere vivente", ed infine... un "Oggetto"!

    Ma torniamo a noi.

    Il "Lavoratore Dipendente" e' anche "Dipendente". Come faccio in Java a dire che "Lavoratore Dipendente" estende sia "Lavoratore" che "Dipendente"? Non posso, a meno che "Dipendente" non sia un'interfaccia. In tal caso, mi basta implementarla.
    Se soddisfo certe condizioni, tutte le funzioni che prendono come parametro un "Dipendente", accetteranno anche un "Lavoratore Dipendente".

    Sono stato piu' chiaro? Non credo proprio... :rollo:
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  8. #8
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    adesso ho capito meglio !!!!
    grazie a tutti delle risposte...
    senza gli esempi giusti non vedevo le differenze !!!
    grazie 1000
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  9. #9
    Ottimo.
    Altrimenti dovevo farti l'esempio della classe Tossico che implementa Dipendedente...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    non ho capito molto, è un puro virtuosismo l'interfaccia o a volte è indispensabile?
    e va oltre il polimorfismo?

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.