Sì, ma quello non lo puoi fare.
Tu hai istanziato un oggetto della classe "classe1" e non un oggetto della classe "classe2".
Un conto è avere un oggetto di classe "classe2", referenziato da una variabile dichiarata di tipo "classe1" (ed è lecito, per l'ereditarietà), di cui si desidera usare un metodo proprio della "classe2"... questo si fa con un cast, che va prima testato (deve essere lecito):
Una cosa ben diversa è ciò che stai cercando di fare tu.codice:Animale a = new Uomo(); if (a instanceof Uomo) { // Lo posso fare perchè // 1) Ho effettuato il test ed ha dato esito positivo // 2) a1 è effettivamente un Uomo ((Uomo) a).guida(); }
Ciao.codice:Animale b = new Animale(); // Questo non è un Uomo e non potrà mai guidare!!! if (b instanceof Uomo) { // Qui non entrerò mai perchè a2 non è un uomo, ma un animale qualunque // (potrebbe essere tranquillamente una gallina) ((Uomo) b).guida(); }![]()



Rispondi quotando