Cari utenti Java, diciamo che c'è del codice in cui un metodo in una classe ereditata viene sovrascritto:
class Pet { String name; String age; String getString() { return "Домашнее животное"; } } class Cat extends Pet { String getString() { return "Кот Рыжик"; } } public static void main(String[] args) { Pet cat = new Cat(); cat.getString(); }
per favore ditemi quale versione del metodo getString() verrà chiamata per la variabile cat? Ho letto a lezione che è possibile chiamare metodi di un oggetto solo se sono presenti nella classe utilizzata come tipo di riferimento per l'oggetto, indipendentemente dal tipo effettivo dell'oggetto. Ciò significa che in questo caso verrà chiamato il metodo della classe Pet o, in caso di sovrascrittura del metodo, verrà chiamato il metodo della classe oggetto? Grazie.
GO TO FULL VERSION