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

    Aiuto sulle Interfaccie di Java

    Salve come da titolo volevo sapere perchè e possibile che un metodo ritorni un oggetto di tipo interfaccia??
    Es:
    public static InterfaceSconto getSconto(Cliente person) {
    InterfaceSconto sel = new Sconto(0, "N/A");


    if (person.getStato()== "Studente") {
    sel = new Sconto(2, "Studente");
    return sel;
    }

    public interface InterfaceSconto {
    double getPrezzo(double prezzo);
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sandokan92 Visualizza il messaggio
    volevo sapere perchè e possibile che un metodo ritorni un oggetto di tipo interfaccia??
    È perfettamente possibile, così come è possibile avere una qualunque variabile o parametro del tipo di una interfaccia o di una classe astratta. Non è quello il punto. La cosa importante è che quando poi dovrai assegnare/passare/restituire qualcosa, dovrai avere un oggetto (di una classe "concreta") che soddisfa quel tipo, cioè implementa la interfaccia o estende la classe astratta.

    Nel caso di un metodo che ha una interfaccia come tipo di ritorno, il senso è anche facile da capire. Vuol dire che il metodo ha facoltà di scegliere la implementazione che vuole e che il chiamante quindi non dovrebbe preoccuparsi di quale sia ma solo di sapere che l'oggetto funziona secondo l'astrazione descritta dalla interfaccia.
    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 andbin Visualizza il messaggio
    È perfettamente possibile, così come è possibile avere una qualunque variabile o parametro del tipo di una interfaccia o di una classe astratta. Non è quello il punto. La cosa importante è che quando poi dovrai assegnare/passare/restituire qualcosa, dovrai avere un oggetto (di una classe "concreta") che soddisfa quel tipo, cioè implementa la interfaccia o estende la classe astratta.

    Nel caso di un metodo che ha una interfaccia come tipo di ritorno, il senso è anche facile da capire. Vuol dire che il metodo ha facoltà di scegliere la implementazione che vuole e che il chiamante quindi non dovrebbe preoccuparsi di quale sia ma solo di sapere che l'oggetto funziona secondo l'astrazione descritta dalla interfaccia.
    Innanzitutto grazie per la risposta veloce e molto esaustiva, quello che vorrei capire in questa riga "sel = new Sconto(2, "Studente");" come fa l interfaccia a salvare un oggetto di tipo Sconto e qual'è il senso,come fa a memorizzarla essendo un interfaccia non so se mi sono spiegato bene.
    Grazie ancora per la risposta.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sandokan92 Visualizza il messaggio
    quello che vorrei capire in questa riga "sel = new Sconto(2, "Studente");" come fa l interfaccia a salvare un oggetto di tipo Sconto e qual'è il senso,come fa a memorizzarla essendo un interfaccia non so se mi sono spiegato bene.
    La classe Sconto sicuramente è dichiarata per implementare InterfaceSconto ... altrimenti quella assegnazione a sel non compilerebbe nemmeno!
    Se è così, allora vuol dire che Sconto è-un InterfaceSconto, ovvero Sconto è un sottotipo di InterfaceSconto. Pertanto un oggetto Sconto lo puoi assegnare a qualunque variabile (o restituire da un metodo) che è dichiarato InterfaceSconto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    La classe Sconto sicuramente è dichiarata per implementare InterfaceSconto ... altrimenti quella assegnazione a sel non compilerebbe nemmeno!
    Se è così, allora vuol dire che Sconto è-un InterfaceSconto, ovvero Sconto è un sottotipo di InterfaceSconto. Pertanto un oggetto Sconto lo puoi assegnare a qualunque variabile (o restituire da un metodo) che è dichiarato InterfaceSconto.
    Ora ho capito grazie davvero

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da Sandokan92 Visualizza il messaggio
    codice:
                if (person.getStato()== "Studente") {
                    sel = new Sconto(2, "Studente");
                     return sel;
                }

    PS: quella if è sbagliata. Gli oggetti non si confrontano usando l'operatore ==, ma usando il metodo equals().


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    PS: quella if è sbagliata. Gli oggetti non si confrontano usando l'operatore ==, ma usando il metodo equals().


    Ciao.
    No ma non era un confronto fra ogetti xD get.Stato() ritornava un tipo enum.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sandokan92 Visualizza il messaggio
    get.Stato() ritornava un tipo enum.
    Ancora peggio .. a maggior ragione! Un oggetto enum == oggetto string e ti sembra sensato?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Ancora peggio .. a maggior ragione! Un oggetto enum == oggetto string e ti sembra sensato?
    hai ragione XD però stranamente funziona XD

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sandokan92 Visualizza il messaggio
    però stranamente funziona XD
    In quel if non ci può entrare se confronti i reference come ho detto prima. Se poi ti funziona il tutto pur non entrando lì dentro ... beh, è un altro discorso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava 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 © 2025 vBulletin Solutions, Inc. All rights reserved.