Visualizzazione dei risultati da 1 a 10 su 21

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    capisco.
    Ma perchè dici

    Se tu dovessi aggiungere un WindowListener alla tua finestra, dovresti occuparti di implementare manualmente tutti i metodi di tale interfaccia:
    cosa accadrebbe se implementassi giusto quello che mi serve senza dichiarare i metodi "superflui" quali ad esempio windowIconified, windowActivated, etc etc??

    Poi c'è un'altra cosa che non mi è chiara dell'esempio, ovvero:

    WindowListener wl;
    wl=new WindowAdapter()
    {
    public void windowClosing(WindowEvent we)
    {
    System.exit(1);
    }
    perchè l'overriding viene fatto sulla classe WindowAdapter e non sulla WindowListener? Senza contare che stando alla teoria, le classi astratte sono classi che non vengono mai istanziate, perchè quindi in quel caso viene fatto?
    Ultima modifica di American; 15-10-2013 a 14:35

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da American Visualizza il messaggio
    cosa accadrebbe se implementassi giusto quello che mi serve senza dichiarare i metodi "superflui" quali ad esempio windowIconified, windowActivated, etc etc??
    Che non ti compila. Se fai una classe "concreta" (non a sua volta astratta) che ha come super-tipi qualcosa di "astratto" (estende una classe astratta (nota: che ha metodi astratti!) o implementa una interfaccia, che è astratta), sei obbligato a "concretizzare" tutti i metodi. Altrimenti appunto non compila.

    Quote Originariamente inviata da American Visualizza il messaggio
    Poi c'è un'altra cosa che non mi è chiara dell'esempio, ovvero:

    perchè l'overriding viene fatto sulla classe WindowAdapter e non sulla WindowListener? Senza contare che stando alla teoria, le classi astratte sono classi che non vengono mai istanziate, perchè quindi in quel caso viene fatto?
    È WindowAdapter che implementa "concretamente" in primis i metodi della interfaccia. Se estendi WindowAdapter puoi fare un override a sua volta di uno o più (e appunto non necessariamente tutti) dei suoi metodi.
    Ultima modifica di andbin; 15-10-2013 a 14:48
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da American Visualizza il messaggio

    cosa accadrebbe se implementassi giusto quello che mi serve senza dichiarare i metodi "superflui" quali ad esempio windowIconified, windowActivated, etc etc??
    Semplicemente non potresti avviare il programma perchè avresti errore di compilazione.

    Quote Originariamente inviata da American Visualizza il messaggio
    Poi c'è un'altra cosa che non mi è chiara dell'esempio, ovvero:
    perchè l'overriding viene fatto sulla classe WindowAdapter e non sulla WindowListener?
    Appunto come ti è stato detto prima, per non dover definire tutti i metodi contenuti nell'interfaccia WindowListener.

    Quote Originariamente inviata da American Visualizza il messaggio
    Senza contare che stando alla teoria, le classi astratte sono classi che non vengono mai istanziate, perchè quindi in quel caso viene fatto?
    Dalle tue domande si deduce che hai saltato le basi della programmazioni OOP per buttarti dentro a swing...., consiglio spassionato fai un passo indietro e dai un occhio All'ereditarietà, Polimorfismo (le basi dell'OOP)etc...
    Quello che vedi è un "Inner Class" che appunto instanzia una classe astratta ridefinendo i metodo astratti contenuti in essa.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da American Visualizza il messaggio
    cosa accadrebbe se implementassi giusto quello che mi serve senza dichiarare i metodi "superflui" quali ad esempio windowIconified, windowActivated, etc etc??
    Errore di compilazione: tutti i metodi dell'interfaccia devono essere implementati (a meno che la classe non sia astratta ma in questo caso non la puoi istanziare)

    Quote Originariamente inviata da American Visualizza il messaggio
    perchè l'overriding viene fatto sulla classe WindowAdapter e non sulla WindowListener? Senza contare che stando alla teoria, le classi astratte sono classi che non vengono mai istanziate, perchè quindi in quel caso viene fatto?
    WindowListener wl = new WindowAdapter() è perfettamente legale perché:
    1. WindowAdapter è una classe concreta (non astratta)
    2. WindowAdapter è-un WindowListener
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.