Giunto all'argomento esposto nel titolo, ho voluto fare un esercizio standard dove da una classe Quadrilatero ne derivava una rettangolo da cui ne derivava una quadrato. Utilizzando lo stesso metodo calcoloPerimetro() va tutto alla grande, quando però devo calcolare l'area qualcosa non va, e davvero non capisco cosa! ecco il codice MAIN..
public class MainProgram {
public static void main(String[] args) {
Quadrilatero a = new Quadrilatero(5,5,10,4);
Rettangolo b = new Rettangolo (7,19,10);
Quadrato c = new Quadrato (4);
int Pa = a.calcolaPerimetro(); System.out.println(Pa);
int Pb = b.calcolaPerimetro(); System.out.println(Pb);
int Pc = c.calcolaPerimetro(); System.out.println(Pc);
int Aa = a.calcoloArea(); System.out.println(Aa);
int Ab = b.calcoloArea(); System.out.println(Ab);
int Ac = c.calcoloArea(); System.out.println(Ac);
}
}
ora quello della classe Quadrilatero
public class Quadrilatero {
private int latoA,latoB,latoC,latoD; //lati del quadrilatero
//Costruttore
public Quadrilatero(int a,int b, int c,int d) {
latoA = a; latoB=b; latoC = c; latoD = d;
}
//vari metodi
public int calcolaPerimetro() {
return latoA + latoB + latoC + latoD;
}
public int calcoloArea() {
return (latoA*latoB*2);
}
}
ora quello della classe Rettangolo
public class Rettangolo extends Quadrilatero {
int latoA,latoB;
private int colore;
//Costruttore
public Rettangolo(int a,int b,int c) {
super(a,b,a,b);
colore = c;
}
public Rettangolo (int a,int b) {
this(a,b,0);
}
//metodo colore
public int getColore() {
return colore;
}
public int calcoloArea() {
return latoA*latoB;
}
}
ed infine quello della classe quadrato
public class Quadrato extends Rettangolo {
int latoA;
//costruttore
public Quadrato(int a) {
super (a,a);
}
public int calcoloArea() {
return (latoA*latoA);
}
}
perchè le aree del rettangolo e del quadrato sono date a 0?