/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm illustriert den Umgang mit abstrakten */ /* Methoden. */ /***************************************************************/ /* abstrakte Klasse Kundenbeziehung */ abstract class Kundenbeziehung { private double jahresgebuehr; /* getJahresgebuehr() zum Lese-Zugriff auf das private-Attribut jahresgebuehr. */ double getJahresgebuehr() { return jahresgebuehr; } /* Die folgende abstrakte Methodendeklaration gebuehrEinziehen() legt fest, dass alle (nicht abstrakten) Unterklassen eine Methode mit entsprechendem Kopf definieren muessen. Hier in der abstrakten Oberklasse wird aber noch nichts bezueglich der Implementation dieser Methode festgelegt. */ abstract void gebuehrEinziehen(); } /* Unterklasse Konto */ class Konto extends Kundenbeziehung { private double stand; public void abheben(double betrag) { stand -= betrag; } /* Implementation der Methode gebuehrEinziehen(): Jahresgebuehr wird von diesem Konto abgehoben. */ void gebuehrEinziehen() { abheben(getJahresgebuehr()); } } /* Unterklasse Schliessfach */ class Schliessfach extends Kundenbeziehung { Konto referenzkonto; /* Implementation der Methode gebuehrEinziehen(): Jahresgebuehr wird von einem Referenzkonto abgehoben. */ void gebuehrEinziehen() { referenzkonto.abheben(getJahresgebuehr()); } } /* Hauptprogramm */ public class AbstrMth { public static void main(String args[]) { /* Hauptprogramm in diesem Beispiel nicht ausprogrammiert */ } }