public interface Alkohol {
double alkohogehalt();
boolean alkoholfrei();
int alkoholgehaltInML();
}
public class BierImpl extends AbstractAlkoholisch implements Bier{
public BierImpl(String herkunft, String sorte, int ml, int pfand, double alkoholgehalt) {
super(herkunft, sorte, ml, pfand, alkoholgehalt);
}
}
public abstract class AbstractAlkoholisch extends AbstractGetraenk implements Getraenk, Alkohol{
double alkoholgehalt;
public AbstractAlkoholisch(String herkunft, String sorte, int ml, int pfand, double alkoholgehalt) {
super(herkunft, sorte, ml, pfand);
if (alkoholgehalt < 0) {
throw new RuntimeException("Der Alkoholgehalt darf nicht kleiner als 0 sein!");
}
this.alkoholgehalt = alkoholgehalt;
}
public double alkoholgehalt() {
return this.alkoholgehalt;
}
public int alkohholgehaltInMl() {
return (int) (Math.round((this.ml * alkoholgehalt) / 100));}
public boolean alkoholfrei() {
return this.alkoholgehalt < 0.5;
}
=> Mir wird folgender Fehler angezeigt:
"Die BierImpl Klasse soll abstrakt deklariert werden oder die Methode alkoholgehalt() von Alkohol implementieren."
Die Methoden werden doch alle in der abstrakten Klasse AbstraktAlkoholisch implementiert und die BierImpl Klasse extends AbstraktAlkoholisch.
Deshalb verstehe ich nicht, warum hier der Compiler meckert!