Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    313

    [JAVA]Chiamata polimorfica

    Salve a tutti.Ho un interfaccia con due metodi:

    codice:
    public interface IQuery
    {
      buildQuery()
      execQuery()
      
    }
    
    poi questi due metodi sono implementati dalle classi
    
    
    public class MySqlQuery implements IQuery{
    
    
       public MySqlQuery(){
    
       }
       
       public void buildQuery(){
       .....
       }
       public void execQuery(){
       ......
       
       }
      
    }
    
    public class OralcleQuery implements IQuery{
    
    
       public OracleQuery(){
    
       }
       
       public void buildQuery(){
       .....
       }
       public void execQuery(){
       ......
       
       }
      
    }
    Entrambi le classi dovrebbero essere chiamate dalla classe CONTROLLER, ma non so proprio come
    fare,a fare una chiamata polimorfica,Come Dovrei fare?GRAZIE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA]Chiamata polimorfica

    Originariamente inviato da tcc
    Entrambi le classi dovrebbero essere chiamate dalla classe CONTROLLER, ma non so proprio come
    fare,a fare una chiamata polimorfica,Come Dovrei fare?GRAZIE
    L'avevo già spiegato in una tua altra discussione. La classe Controller userà da qualche parte una variabile di tipo IQuery. Dove ... dipende. Può essere un campo di istanza o un parametro di un metodo. Alla classe Controller infatti non dovrebbe importare quale è il tipo esatto dell'oggetto su cui operare, se è un MySqlQuery piuttosto che un OracleQuery. Alla classe Controller dovrebbe importare solo sapere che l'oggetto è-un IQuery.

    Una cosa del genere:

    codice:
    public class Controller {
        private IQuery iq;
    
        public Controller (IQuery iq) {
            this.iq = iq;
        }
    
        public void esegui () {
            iq.buildQuery ();
            iq.execQuery ();
        }
    }
    O ad esempio senza che Controller abbia un campo di istanza IQuery, basta avere un metodo:

    codice:
        public void esegui (IQuery iq) {
            iq.buildQuery ();
            iq.execQuery ();
        }
    Ma poi dove metti e usi un reference di tipo IQuery dipenderà da cosa devi fare di preciso.

    Spero di aver chiarito la questione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    313
    Se ad esempio devo fare le chiamate di buidQuery() ed execQuery() in due momenti diversi devo fare due metodi diversi di CONTROLLER ?cioè

    codice:
    public class Controller {
        private IQuery iq;
    
        public Controller (IQuery iq) {
            this.iq = iq;
        }
    
        public void esegui () {
            iq.buildQuery ();
            
        }
       public void esegui2 () {
            
            iq.execQuery ();
        }
        
    }
    giusto?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tcc
    giusto?
    Sì, è corretto.
    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.