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.