Visualizzazione dei risultati da 1 a 5 su 5

Discussione: abstact vs interface

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,263

    abstact vs interface

    Non ho capito anche questo argomento.

    Una classe abstract con dei metodi abstract impone che gli oggetti che ereditano il tutto debbano tenere quei metodi no?

    L'implementazione dell'interfaccia non fa lo stesso?

    Quando dovrei usare l'uno e quando l'altro?

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Parti dal presupposto che sia interfacce che classi astratte, non nascono per essere istanziate, ma bensì per rappresentare astrattamente il tipo base di una classe(per le classi astratte) e comportamenti comuni(interfacce).
    Dal punto di vista specifico, per definire una classe astratta, basta che al suo interno hai un metodo dichiarato abstract, per le interfacce, di default, tutti i metodi sono dichiarati abstract. Inoltre in una interfaccia non vai assolutamente ad implementare i metodi, ma dichiari solo le firme dei metodi, e puoi andare a definire solo costanti (dichiarate "static final").
    Una nota riguardo alle classi astratte:
    In una classe astratta, potresti avere dei metodi non dichiarati abstract e fornire anche una implementazione.

    In definitiva, spesso, le classi astratte le usi per astrarre il tipo base di una classe,fornendo un contratto verticale... mentre con una interfaccia vai ad astrarre i comportamenti che risultano essere in comune tra più classi, fornendo un contratto orizzontale.. tra gli oggetti che andranno ad implementare l'interfaccia.

    N.b: Questo in linea di massima, ci sono ancora tante cose da spiegare... ma basta che leggi un libro a riguardo.
    Ultima modifica di gaten; 18-04-2016 a 10:04
    Con i sogni possiamo conoscere il futuro...

  3. #3
    Due differenze in sintesi tra abstract class e interface:

    - un'abstract class oltre alle signature astratte puo' fornire l'implementazione concreta di alcuni metodi, un'interfaccia no
    - una classe puo' implementare piu' interfacce, ma una sola abstract class

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,263
    Grazie per la spiegazione

  5. #5
    Un esempio frequente di classe astratta è quello di una classe base che implementa un'interfaccia e utilizza metodi astratti per consentirne la specializzazione ad una serie di classi figlio che estendono tale classe astratta. Un esempio potrebbe essere quello della lettura di un dato da più fonti diverse: fai un'interfaccia Reader, un AbstractReader in cui sono implementate le procedure comuni e un metodo astratto "doRead", e poi lo estendi da XmlReader, YmlReader, PlainReader, etc... che implementano solo il metodo doRead a seconda del formato richiesto
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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 © 2020 vBulletin Solutions, Inc. All rights reserved.