Visualizzazione dei risultati da 1 a 10 su 18

Discussione: classi anonime

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da newutente Visualizza il messaggio
    Ti riferisci al fatto che definendo una interfaccia si è in qualche modo costretti poi a implementare i suoi metodi?
    Anche facendo una classe astratta con metodo astratto avresti lo stesso obbligo (ovviamente in una classe concreta):

    codice:
    public abstract class FiltroFilm {
        public abstract boolean filtra(Film film);
    }

    A livello di "contratto" e di obblighi non ci sono differenze: in una classe concreta che estende FiltroFilm devi implementare filtra. La dichiarazione-istanziazione con una classe anonima è esattamente la stessa con FiltroFilm come interfaccia o come classe astratta.
    Il punto è che una interfaccia la puoi implementare in qualunque classe. Una classe astratta .... no, non è detto (una classe può già estendere altro).

    Quote Originariamente inviata da newutente Visualizza il messaggio
    Ah ecco, quindi diciamo che questo esempio mostra che volendo è possibile implementare i metodi di una interfaccia anche tramite una classe anonima. Giusto?
    Sì, se quel comportamento non deve essere riutilizzabile altrove.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    315
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Il punto è che una interfaccia la puoi implementare in qualunque classe. Una classe astratta .... no, non è detto (una classe può già estendere altro).
    cioè una interfaccia è sufficiente che la implementi per implementare quel metodo, una classe astratta invece la devi comunque estendere tramite un'altra classe e quindi devi comunque creare una relazione di ereditarietà. Giusto?


    p.s. vado un attimo off topic perchè vorrei segnalarti il mio ultimo post ( http://forum.html.it/forum/showthrea...readid=2918433 ) che forse è sfuggito.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da newutente Visualizza il messaggio
    cioè una interfaccia è sufficiente che la implementi per implementare quel metodo, una classe astratta invece la devi comunque estendere tramite un'altra classe e quindi devi comunque creare una relazione di ereditarietà. Giusto?
    Ma anche implementando una interfaccia si ha una relazione di "ereditarietà".

    Che FiltroFilm sia interfaccia:

    public class MyCustomFiltroFilm implements FiltroFilm { .... }

    Oppure che FiltroFilm sia classe astratta (con filtra abstract):

    public class MyCustomFiltroFilm extends FiltroFilm { .... }

    In entrambi i casi FiltroFilm è comunque un "super" tipo di MyCustomFiltroFilm. E per quanto riguarda MyCustomFiltroFilm, gli obblighi sono gli stessi: se non è astratta (come definizione sopra), allora deve implementare quel metodo filtra.


    Quote Originariamente inviata da newutente Visualizza il messaggio
    p.s. vado un attimo off topic perchè vorrei segnalarti il mio ultimo post ( http://forum.html.it/forum/showthrea...readid=2918433 ) che forse è sfuggito.
    Vedo di risponderti appena posso.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java 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 © 2026 vBulletin Solutions, Inc. All rights reserved.