Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]classi astratte e poliformismo

    Ciao sto volgendo un esercizio sulle classi astratte e sul polimorfismo...e mi sono chiesto.,..se una superclasse è stratta(quoindi non posso istanziarla)...come possono le sottoclassi essere assegante alla superclasse? Cioè se ho il seguente codice:

    codice:
    abstract class Animali{
    String tipo;
    String nome;
    Animali(String tipo,String nome){
    this.tipo=tipo;
    this.nome= nome;
    }
    public String getNome(){
        return nome;
    }
    public String getTipo(){
        return tipo;
    }
    }
    codice:
    class Mammifero extends Animali{
        Animali a;
    Mammifero(String tipo){
    super(tipo,null);
    }
    
    //assegno ad Animali il Gatto 
    public void setAssegno(Gatto g){
        a=g;
    }
    }
    codice:
    class Gatto extends Animali{
        Gatto(String nome){
            super(null,nome);
        }
    }
    In pratica la gerarchia è:

    codice:
    Animali(abstract)
       |           |
       |           |
    Mammifero    Gatto
    Nella classe setAssegno(Gatto g) è giusto assegare in questo modo la classe gatto ad animali(che è abstract)?
    Ultima modifica di el92; 08-05-2015 a 17:41

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Ciao sto volgendo un esercizio sulle classi astratte e sul polimorfismo...e mi sono chiesto.,..se una superclasse è stratta(quoindi non posso istanziarla)...come possono le sottoclassi essere assegante alla superclasse?
    Variabili/parametri possono benissimo essere di un tipo astratto (interfaccia o classe abstract). Non è quello il problema. Chiaramente ad una variabile/parametro di tipo Animali (nota: dovrebbe chiamarsi Animale) che è abstract potrai e dovrai assegnare oggetti di sotto-classi "concrete".


    P.S.: Che senso ha, proprio concettualmente, assegnare un Gatto ad un Mammifero??
    P.S.2: il gatto è un mammifero. Quindi avrebbe più senso Gatto extends Mammifero.
    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 L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ciao grazie per la risposta lo so era un esempio stupido senza senso..solo per capire se era giusto fare un assegnamento di questo tipo

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    solo per capire se era giusto fare un assegnamento di questo tipo
    Sì una cosa tipo:
    Animale a = new Gatto();

    è sempre corretta se Animale è un super-tipo di Gatto, indipendentemente dal fatto che Animale sia una interfaccia, classe astratta o non astratta.
    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.