Salve a tutti, sto cercando di compilare il seguente codice in Java:
Alla riga indicata dal commento però, quando lancio il debug, Eclipse continua a restituirmi il seguente messaggio di errore:codice:// CLASSE GENERICA FIGURA public abstract class Figura { //METODI ASTRATTI public abstract double getArea(); public abstract double getPerimetro(); public boolean haAreaMaggiore(Figura altra) { return this.getArea() > altra.getArea(); } public boolean haPerimetroMaggiore(Figura altra) { return this.getPerimetro() > altra.getPerimetro(); } //CLASSE RETTANGOLO (ESTENSIONE DI FIGURA) public class Rettangolo extends Figura { //CAMPI private double base, altezza; //COSTRUTTORE public Rettangolo(double x, double y) { base = x; altezza = y; } //METODI public double getArea() { return base * altezza; } public double getPerimetro() { return 2 * (base + altezza); } public double getAltezza() { return altezza; } public double getBase() { return base; } public String toString() { return "base = " + base + ", altezza = " + altezza; } public boolean equals(Rettangolo altro) { return this.base == altro.base && this.altezza == altro.altezza; } public boolean equals(Object o) { if (o instanceof Rettangolo) { Rettangolo a = (Rettangolo) o; return equals(a); } else return false; } public void cambiaBase(double x) { base = x; } public void cambiaAltezza(double x) { altezza = x; } } //CLASSE QUADRATO (ESTENSIONE DI RETTANGOLO) public class Quadrato extends Rettangolo { //COSTRUTTORE public Quadrato(double x) { super(x, x); //ERRORE!!! } //METODI public double getLato() { return getBase(); } public String toString() { return "lato = " + getLato(); } public void cambiaLato(double x) { super.cambiaBase(x); super.cambiaAltezza(x); } public void cambiaBase(double x) { cambiaLato(x); } public void cambiaAltezza(double x) { cambiaLato(x); } } //CLASSE CERCHIO (ESTENSIONE DI FIGURA) public class Cerchio extends Figura { //CAMPI private double r; //COSTRUTTORE public Cerchio(double raggio) { r = raggio; } //METODI public double getArea() { return Math.PI * r * r; } public double getPerimetro() { return 2 * Math.PI * r; } public boolean equals(Cerchio altro) { return this.r == altro.r; } public boolean haAreaMaggiore(Cerchio altro) { return this.getArea() > altro.getArea(); } public boolean haPerimetroMaggiore(Cerchio altro) { return this.getPerimetro() > altro.getPerimetro(); } public double getRaggio() { return r; } public String toString() { return "raggio = " + getRaggio(); } } }
"No enclosing instance of type Figura is available due to some intermediate constructor invocation"
Ho provato anche a compilare da Shell, ma il messaggio d'errore è molto simile (sempre alla stessa riga):
"Cannot reference this before supertype constructor has been called"
Qualcuno saprebbe darmi qualche consiglio?

Rispondi quotando

. Farò più attenzione prossimamente.
