Problem beim Überschreiben einer vererbten Methode

Diskutiere Problem beim Überschreiben einer vererbten Methode im Java Basics - Anfänger-Themen Bereich.
P

Pjascha

Hallo zusammen
Ich lerne grad im Selbststudium programmieren mit dem Buch "Programmieren lernen mit Java" von Hans Peter Habelitz und bin in den Übungsaufgaben zu Kapitel 6 auf folgendes Problem gestoßen: Die Unterklasse "Girokonto" erbt die Methode "auszahlen" von der Hauptklasse "Konto". Die Klasse Girokonto wird um das Attribut limit ergänzt, welches verhindert, dass zu viel Geld auf einmal abgehoben bzw ausgezahlt wird. Deshalb muss auch die Methode "auszahlen" überarbeitet werden.
Nun ersteinmal der Code damit ihr mir besser folgen könnt:

Hauptklasse Konto:

Java:
public class Konto {
    protected String kontoNummer;
    protected double kontoStand;
    Konto(String kontoNummer, double kontoStand){
        this.kontoNummer = kontoNummer;
        this.kontoStand = kontoStand;
    }
    }
    public void auszahlen(double auszahlBetrag) {
        kontoStand -= auszahlBetrag;
    }
}
Unterklasse Girokonto:

Java:
public class GiroKonto extends Konto {
    double limit;
    GiroKonto(String kontoNummer, double kontoStand, double limit){
        super(kontoNummer, kontoStand);
        this.limit = limit;
    }
    public void auszahlen(double auszahlBetrag) {
        if(auszahlBetrag > limit) {
            System.out.println("Fehler: Kreditlimit überschritten!");
        }
        else {
            super.auszahlen(auszahlBetrag);
        }
    }
}
Jetzt zu meinem Problem: wenn ich in einem Programm (Girokontotest) ein Objekt der Klasse Girokonto erstelle und mit der auszahl-Methode versuche einen Betrag auszugeben der das Limit überschreitet, so wird wie von mir gewollt der Fehler in der Konsole ausgegeben. Zustätzlich dazu aber auch der Kontostand, welcher nicht in der Methode der Unterklasse enthalten ist.
Ist das Überschreiben also Schlussendlich ein ergänzen? Oder habe ich einen anderen Fehler eingebaut?
Vielen Dank schon einmal im Voraus :)

PS: Ist der Super-Konstruktor hier richtig verwendet?
 
Zuletzt bearbeitet von einem Moderator:
mrBrown

mrBrown

Jetzt zu meinem Problem: wenn ich in einem Programm (Girokontotest) ein Objekt der Klasse Girokonto erstelle und mit der auszahl-Methode versuche einen Betrag auszugeben der das Limit überschreitet, so wird wie von mir gewollt der Fehler in der Konsole ausgegeben. Zustätzlich dazu aber auch der Kontostand, welcher nicht in der Methode der Unterklasse enthalten ist.
Wie sieht denn Girokontotest aus?

In dem Code wird nirgends der Kontostand ausgegeben, der "Fehler" liegt also nicht da, überschrieben ist da völlig korrekt :)

PS: Ist der Super-Konstruktor hier richtig verwendet?
Ja
 
P

Pjascha

Okay danke für die schnelle Antort :)
hier noch das Programm zum Testen:
Code:
public class GiroKontoTest {
    public static void main(String args[]) {
        GiroKonto gk = new GiroKonto("0000000001", 10000.00, 1000.00);
        gk.auszahlen(1001);
        System.out.println("Kontostand: " + gk.getKontoStand());
    }

}
Ich habe hier ein Objekt der Klasse Girokonto erstellt, mit dem Limit 1000 Euro. Die Fehlermeldung wird wie gewollt angezeigt, dazu aber auch die der Kontostand, welcher ja in der Überschriebenen Methode nicht mehr enthalten ist.
Die Konsolenausgabe:
Fehler: Kreditlimit überschritten!
Kontostand: 10000.0
 
J

JustNobody

Die Ausgabe vom Kontostand kommt doch immer, da Du das ja nach dem Aufruf von auszahlen aufrufst:
System.out.println("Kontostand: " + gk.getKontoStand());
 
Thema: 

Problem beim Überschreiben einer vererbten Methode

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben