L'esempio da te fatto è sicuramente pertinente con la mia situazione: per correttezza ti posso svelare un retroscena. Oltre al Dispatch dei metodi sto incontrando ovvie difficoltà anche con classi dichiarate abstract e con le interfaccie; per le ultime due però ho trovato sul forum delle discussioni già aperte, che almeno nel caso di abstract mi hanno chiarito qualcosa (le interfaccie ancora sono mistero al 100%), tanto è che mi sono creato questo esempio basandomi su una delucidizione letta in un post, esempio che bada caso è proprio quello dell'area!
codice:
abstract class Poligono {
int base;
int altezza;
abstract double area();
}
class Triangolo extends Poligono {
Triangolo(int b, int h) {
this.base = b;
this.altezza = h;
}
double area() {
return (altezza*base/2);
}
}
class Quadrato extends Poligono {
Quadrato(int lato) {
this.base = lato;
this.altezza = lato;
}
double area() {
return (base*altezza);
}
}
class CalcoloArea {
public static void main(String args[]) {
Poligono T1 = new Triangolo(10, 5);
Poligono Q1 = new Quadrato(3);
System.out.println("Area Triangolo: " + T1.area());
System.out.println("Area Quadrato: " + Q1.area());
}
}
Con tale esempio ho iniziato ad intuire quale possa essere l'uso di abstract... vedendo quello fatto da te vedo anche ciò che io nel mio non sono riuscito a fare, cioè chiamare un metodo come visualizzaArea che si comporta in conseguenza dell'oggetto che gli viene passato!
Forse per qualcuno ho scoperto l'acqua calda ma vi assicuro che dopo anni e anni di procedure gli oggetti sono un po ostici!