Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    problemi con interface

    ciaooo ragzzi io sono nuovo nel mondo di java, ho letto parecchi manuali pero' non riesco a capire a cosa servono le interface, ho capito che al suo interno si inseriscono dei metodi abstract, che vengono usati per creare classi con multi eriditarietà pero' sinceramente non ho un esmpio pratico di queste interface!!!
    altra domanda piu' classi possono implementare i metodi astratti di una interface?
    posso richiamare un interface(so che non si possono istanziare) da una classe? se si come posso fare?
    ciao grazie!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Puoi fare una ricerca......

    Ne abbiamo parlato qui e qui.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    ho provato a fare delle ricerche, ma nonn ho capito ancora come si puo' creare un ereditarietà multipla, non c'è un esempio di codice semplice!vi ringrazio!!!

  4. #4
    io ho provato a creare un interface con dei metodi astratti, poi ho implementato questi metodi in una classe, pero' in questo modo non ho un eredità multipla!

    es .
    public interface s {
    public void somma();
    public void moltiplicazione();
    }


    public class ff implements s{
    public void somma(){
    int a=5;
    a=a+3;
    }
    public void moltiplicazione(){
    int c=8;
    c=c*2;
    }
    }
    come posso richiamare(ovvio se posso) dal main un interface?

  5. #5
    Le interfacce sono delle classi astratte in cui tutti i metodi sono astratti e dove non esistono attributi se non costanti.

    Supponi di avere una classe Automobile che definisce tra le altre cose (getBenzina(), getKM(),...) un metodo che "accende" la macchina stessa. Supponi ancora che macchine diverse si "accendono" in modo diverso: la SuperAuto si accende tramite messaggio vocale, mentre la MiniAuto si accende con le chiavi, normalmente.
    La SuperAuto e la MiniAuto, sono sempre automobili, quindi è giusto che abbiamo metodi come getBenzina() e getKM()...ma tra loro sono differenti perchè si accendono non nello stesso modo.
    Una buona soluzione è quella di dichiarare la classe Automobile come abstract, nonchè il suo metodo accendi() (che nella classe abstract non definiamo).
    Questo ci costringe a definire il metodo accendi() nelle classi derivate: ed è proprio quello che vogliamo perchè l'accensione sarà diversa nella SuperAuto e nella MiniAuto....
    E fin qui, la classe astratta.

    Quando invece dobbiamo definire solo le operazioni che un oggetto deve fare senza dire il come, cioè senza specificarne l'implementazione (ovvero, ancora, se tutti i metodi di una classe dovrebbero essere abstract) allora entrano in gioco le interfacce.

    Ad esempio potresti avere una interfaccia che descrive una Lista: allora definirai tutti i metodi che servono per gestira la lista: getNext(), isIn(...), getFirst(...), addElem, deleteElem....ecc
    Poichè le liste possono essere implementate in tanti modi, non scriviamo mai l'implementazione di nessun metodo.
    Quello che facciamo è definire diverse classi che implementano l'interface Lista e ridefiniscono tutti i metodi (obbligatoriamenti contenuti nell'interface stessa): avremo allora, per esempio, una classe che gestisce le liste tramite array ArrayLista:
    codice:
    class ArrayLista implements Lista
    {
       int[]elementi;
       ....
       //implementazione particolare di tutti i metodi contenuti in Lista
    }
    Oppure ancora possiamo avere una classe che gestisce le liste dinamicamente (liste linkate) e non più con gli array:
    codice:
    class LinkedLista implements Lista
    {
        Nodo first;
        Nodo current;
        Nodo coda;
        //implementazione particolare di tutti i metodi contenuti in Lista
    }
    NOTA Non puoi "istanziare un oggetto di tipo Lista"! Ma puoi scrivere:
    codice:
    LinkedLista mylist = new LinkedLista(....)....
    ArrayLista mylist2 = new ArrayLista(....).....
    
    - ma non:
    Lista mylist = new Lista();
    ....
    Per l'ereditarietà multipla:
    Java non permette l'ereditarietà multipla in modo esplicito come in altri linguaggi (vedi c++).
    Infatti possiamo solo estendere una sola classe padre.
    Però possiamo implementare più interfacce...
    Quindi se hai due interface I1 e I2 con dei metodi particolari puoi scrivere
    codice:
    class MyClass implements I1, I2
    {
      //devi implementare tutti i metodi: sia quelli di I1 che quelli di I2
      ...
    }
    Spero di essere stato chiaro e di non aver sbagliato niente :P
    Ciao.
    ...c'è chi come te attende l'alba...

  6. #6
    ti ringrazio tanto....
    quindi le classi non sono fondamentali o sbaglio!

  7. #7
    eh???? in che senso le classi non sono fondamentali?
    Quali classi, intendi? E cmq sono tutte fondamentali....
    ...c'è chi come te attende l'alba...

  8. #8
    scusa ho sbagliato volevo dire le interface!!
    nel senso che se io non creo una interfece nel mio progetto riesco cmq (sempre) a risolvere il problema!!
    io in realta pensavo che grazie alle interface riuscivo a creare metodi astratti che potevano successivamente essere implemementati in piu' classi(senza dover obbligatoriamente implementare tutti i metodi) e poi successivamente potevo richiamare l'interface e sarebbe stata lei a recuperare i vari metodi contenuti in piu' classi!!
    nel modo che mi hai spiegato tu non vedo una grossa utilita' o meglio non sono fondamentali!

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    le interfacce diventano molto utili quando stai lavorando ad un progetto di una certa entita'...

    sto lavorando ad un progetto che ha 11 tra package e sotto package con circa una 80ina di classi e 6 interfacce!

    (si lo so, non ve ne frega niente )
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    puoi dire che non sono indispensabili ma sono molto utili...sia classi astratte che interfacce!
    Semplificano il lavoro, lo rendono più a moduli...
    ciao
    ...c'è chi come te attende l'alba...

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.