Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Polimorfismo ..

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    Polimorfismo ..

    Perchè secondo voi un quest'esempio si passa attraverso dell'istanza dell'oggetto della classe padre .. ?
    .. quando si potrebbe farne anche a meno (vedi es. 2 funzionante, come avrei fatto io)
    Grazie

    codice:
    class Veicolo                                                                             
    {                                                                                         
      private int NumeroPosti;                                                                
      public Veicolo(int NP) // costruttore                                                   
        {  NumeroPosti = NP;  }                                                               
      public int getNumeroPosti()                                                             
        { return NumeroPosti; }                                                               
      public String toString()                                                                
        { return "Veicolo con " + NumeroPosti + "posti"; };                                   
    }                                                                                         
                                                                                              
    class Topolino extends Veicolo                                                            
    {                                                                                         
      public Topolino(int NP)      // costruttore                                             
        { super(NP); }                                                                        
      public String toString()     //ridefinisce il metodo                                    
        {                                                                                     
          return "Sono una Topolino e ho " +  getNumeroPosti() + " posti";                    
        }                                                                                     
    }                                                                                         
                                                                                              
    class SeicentoFamiliare extends Veicolo                                                   
    {                                                                                         
      public SeicentoFamiliare(int NP)     // costruttore                                     
        { super(NP); }                                                                        
      public String toString()             //ridefinisce il metodo                            
        { return "Sono una SeicentoFamiliare e ho " + getNumeroPosti() + " posti";  }         
    }                                                                                         
                                                                                  
    public class Esempio4                                                                     
    {                                                                                         
      public static void main(String args[])                                                  
        { Veicolo V;                              // istanza della classe padre               
          Topolino A1 = new Topolino(4);                                                      
          SeicentoFamiliare A2 = new SeicentoFamiliare(6);                                    
          V = A1;                                                                             
          System.out.println(V.toString());                                                   
          V = A2;                                                                             
          System.out.println(V.toString());                                                   
        }                                                                                     
    }
    come avrei fatto io ..

    codice:
    public class Esempio4                                                                                     
    {                                                                                                         
      public static void main(String args[])                                                                  
        {                                                                                                     
          Topolino A1 = new Topolino(4);                        
          SeicentoFamiliare A2 = new SeicentoFamiliare(6);     
          System.out.println(A1.toString());                                                                  
          System.out.println(A2.toString());                                                                  
        }                                                                                                     
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Per farti capire che ad una superclasse puoi assegnare riferimenti di una sottoclasse.
    Ed ovviamente non puoi chiamare i metodi della superclasse tramite la sottoclasse.

    Pensa alla classe Object ad esempio, tutte le classi sono sottoclassi di Object. Quindi Object puoi utilizzarla come oggetto generico, ma per estrarre l'oggetto sei costretto a castarlo.

    Sicuramente altri ti daranno maggiori delucidazioni...se ho detto cavolate scusate, ma vista l'ora...

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Sinceramente non ho capito molto ..
    premessa ..
    ma l'istanza di un oggetto non viene fatta con il 'new' ?

    codice:
    Veicolo V;                              // istanza della classe padre
    Quanto al fatto che non si potrebbe chiamare i metodi della superclasse tramite la sottoclasse ..
    l'esempio seguente non lo fà ?? .. forse si intende qualcos'altro ?

    metodi della classe padre richiamati dalle sottoclassi:
    getNumeroPosti() - getNumeroMotori()

    codice:
    class Veicolo                                       
    {                                                                     
      private int NumeroPosti;                                            
      private int NumeroMotori;                                           
      public Veicolo(int NP, int NM)                        
        {                                                                 
          NumeroPosti = NP;                                               
          NumeroMotori = NM;                                              
        }                                                                 
      public int getNumeroPosti()                                         
        { return NumeroPosti; }                                           
      public int getNumeroMotori()                                        
        { return NumeroMotori; }                                          
    }                                                                     
                                                                          
    class VeicoloTerrestre extends Veicolo                                
    {                                                                     
      private int NumeroRuote;                                            
      public VeicoloTerrestre(int NP, int NM, int NR)      
      {                                                                   
        super(NP, NM);                                    
        NumeroRuote = NR;                                                 
      }                                                                   
      public int getNumeroRuote()                                         
      { return NumeroRuote; }                                             
    }                                                                     
                                                                          
                                                                          
    class VeicoloMarino extends Veicolo                                   
    {                                                                     
      private long Stazza;                                                
      public VeicoloMarino(int NP, int NM, long S)                        
      {                                                                   
        super(NP, NM);                                                    
        Stazza = S;                                                       
      }                                                                   
      public long getStazza()                                             
      {  return Stazza;   }                                               
    }                                                                     
                                                                          
                                                                          
    ---->  main                                                           
                                                                          
    public class Esempio3                                                 
    {                                                                     
      public static void main(String args[])                              
      {                                                                   
        VeicoloTerrestre MiaMacchina;                                     
        VeicoloMarino MiaNave;                                            
        MiaMacchina = new VeicoloTerrestre(5, 2, 4);                      
        System.out.println("La mia macchina ha " +                        
        	                MiaMacchina.getNumeroPosti() + " posti, " +     
        	                MiaMacchina.getNumeroMotori() + " motori e " +  
        	                MiaMacchina.getNumeroRuote() + " ruote");       
                                                                          
        MiaNave = new VeicoloMarino(10, 3, 10);                           
        System.out.println("La mia nave ha " +                            
        	                MiaNave.getNumeroPosti() + " posti, " +         
        	                MiaNave.getNumeroMotori() + " motori e " +	    
        	               "una stazza di " + MiaNave.getStazza());         
      }                                                                   
    }

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.