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

    [JAVA] Superclasse, sottoclasse e affini..

    Ciao a tutti,
    scusate la domanda da super-mega-newbie (ed in effetti su Java lo sono), ma non riesco a risolvere un problema.

    Vi faccio un sunto della situazione:

    Queste sono le due classi
    codice:
    public class A{
    
      private String uno;
      private String due;
      
      public String getUno() {
    	return uno;
      }
      public void setUno(String uno) {
    	this.uno = uno;
      }
      
      public String getDue() {
    	return due;
      }
      public void setDue(String due) {
    	this.due = due;
      }
    }
    
    
    public class B extends A{
    
      private String tre;
      
      public String getTre() {
    	return tre;
      }
      public void setTre(String tre) {
    	this.tre = uno;
      }
    }
    E questo è un metodo

    codice:
    public A getA(){
      A a = new A();
      a.setUno = "uno";
      a.setDue = "due";
      return a;
    }
    Quello che vorrei fare è richiamare il metodo getA ma farmi restituire un oggetto di tipo B (che estende A)
    Questa cosa è possibile?

    Grazie anticipatamente per la risposta (e scusate per l'ignoranza in materia...)

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

    Re: [JAVA] Superclasse, sottoclasse e affini..

    Originariamente inviato da Zseru Tituli
    Quello che vorrei fare è richiamare il metodo getA ma farmi restituire un oggetto di tipo B (che estende A)
    Questa cosa è possibile?
    Certo che è possibile! B è-un A, cioè un oggetto di tipo B lo si può vedere anche come di tipo A (questo è il concetto di polimorfismo).

    Quindi tecnicamente è perfettamente legale fare una cosa del tipo:

    codice:
    public A getA(){
        B b = new B();
        ....
        return b;
    }
    Poi ovviamente il perché vuoi/devi fare una cosa del genere devi saperlo tu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3

    Re: Re: [JAVA] Superclasse, sottoclasse e affini..

    Originariamente inviato da andbin
    Certo che è possibile! B è-un A, cioè un oggetto di tipo B lo si può vedere anche come di tipo A (questo è il concetto di polimorfismo).

    Quindi tecnicamente è perfettamente legale fare una cosa del tipo:

    codice:
    public A getA(){
        B b = new B();
        ....
        return b;
    }
    Poi ovviamente il perché vuoi/devi fare una cosa del genere devi saperlo tu.
    Innanzitutto grazie...
    Credo però di essermi spiegato male...perchè in realtà il mio problema è che il mio metodo

    codice:
    public A getA(){
      A a = new A();
      a.setUno = "uno";
      a.setDue = "due";
      return a;
    }
    esiste e deve rimanere così.

    Quello che stavo cercando di fare, una volta recuperato l'oggetto di tipo A dal metodo getA, era "trasformarlo" in un oggetto di tipo B

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

    Re: Re: Re: [JAVA] Superclasse, sottoclasse e affini..

    Originariamente inviato da Zseru Tituli
    Credo però di essermi spiegato male...
    Sì .... allora molto.

    Originariamente inviato da Zseru Tituli
    Quello che stavo cercando di fare, una volta recuperato l'oggetto di tipo A dal metodo getA, era "trasformarlo" in un oggetto di tipo B
    No, non puoi. Gli oggetti in sé NON si "trasformano" da un tipo ad un altro. Se istanzi un String ... quello è e rimane. Se istanzi un oggetto della tua classe A ... quello è e rimane! Quello che puoi solo fare è "vedere" un oggetto eventualmente come di un suo super-tipo.
    Andrea, andbin.devSenior 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 © 2024 vBulletin Solutions, Inc. All rights reserved.