Invocazione funzione

di il
1 risposte

Invocazione funzione

Ciao vi volevo chiedere una cosa ma se io ho una classe di tipo gatto e poi ho

Animale a=new Gatto();

se poi faccio a.caratteristiche();

va ad invocare la funzione caratteristiche di gatto oppure di animale...

1 Risposte

  • Re: Invocazione funzione

    gaiapuffo ha scritto:


    ciao vi volevo chiedere una cosa ma se io ho una classe di tipo gatto e poi ho

    Animale a=new Gatto();

    se poi faccio a.caratteristiche();

    va ad invocare la funzione caratteristiche di gatto oppure di animale...
    Premesso che Gatto eredita dalla classe Animale, dipende da dove e' stato definito il metodo.
    Se per esempio abbiamo questa situazione:
    
    public class Animale {
         /*altri metodi*/
    }
    
    public class Gatto extends Animale {
         public void caratteristiche(){
              /*definizione*/
         }
         /*altri metodi*/
    }
    
    Allora invochera' il metodo di Gatto, perche' Animale non ha quel metodo.

    Ma se invece
    
    public class Animale {
         public void caratteristiche(){
              /*definizione*/
         }
         /*altri metodi*/
    }
    
    public class Gatto extends Animale {
         /*altri metodi*/
    }
    
    Allora invochera' il metodo di Gatto ereditato da Animale. Quindi prendera' la definizione dal metodo di Animale.

    Infine se
    
    public class Animale {
         public void caratteristiche(){
              /*definizione*/
         }
         /*altri metodi*/
    }
    
    public class Gatto extends Animale {
         public void caratteristiche(){
              /*definizione*/
         }
         /*altri metodi*/
    }
    
    Gatto sovrascrive il metodo caratteristiche(), quindi invochera' l'ultimo definito, cioe' quello di Gatto.
Devi accedere o registrarti per scrivere nel forum
1 risposte