/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm demonstriert die Verwendung einer abstrakten */ /* Klasse. */ /***************************************************************/ import java.io.*; /* abstrakte Klasse Kundenbeziehung: Die Klasse wird als Oberklasse der Klassen Konto und Schliessfach verwendet; sie enthaelt Informationen, die in beiden Unterklassen gebraucht werden. Diese Informationen machen nur Sinn im Zusammen- hang mit einem Konto oder Schliessfach, so dass keine Objekte des Typs Kundenbeziehung erzeugt werden sollen. Die Oberklasse wird daher als abstrakt definiert */ abstract class Kundenbeziehung { private String kundenname; private double jahresgebuehr; Kundenbeziehung(String kundenname, double jahresgebuehr) { this.kundenname = kundenname; this.jahresgebuehr = jahresgebuehr; } void printInfo() { System.out.println(" kundenname: " + kundenname); System.out.println(" jahresgebuehr: " + jahresgebuehr); } } /* Unterklasse Konto */ class Konto extends Kundenbeziehung { private double stand; Konto(double stand, String kundenname, double jahresgebuehr) { super(kundenname,jahresgebuehr); this.stand = stand; } void printInfo() { System.out.println(" stand: " + stand); super.printInfo(); } } /* Unterklasse Schliessfach */ class Schliessfach extends Kundenbeziehung { private int volumen; Schliessfach(int volumen, String kundenname, double jahresgebuehr) { super(kundenname,jahresgebuehr); this.volumen = volumen; } void printInfo() { System.out.println(" volumen: " + volumen); super.printInfo(); } } /* Hauptprogramm */ public class AbstrKls { public static void main(String args[]) { Konto meinKonto = new Konto(100.0,new String("ich"),10.0); System.out.println(); System.out.println("Attributwerte von meinKonto:"); meinKonto.printInfo(); Schliessfach meinSchliessfach = new Schliessfach(23,new String("ich"),20.0); System.out.println(); System.out.println("Attributwerte von meinSchliessfach:"); meinSchliessfach.printInfo(); Kundenbeziehung kd; /* Deklaration der Objektvariablen bzueglich des abstrakten Typs ist zulaessig */ /* kd = new Kundenbeziehung(new String("ich"),30.0); Erzeugung eines Objekts von Typ Kundenbeziehung ist nicht zulaessig, da Kundenbeziehung als abstract defininiert wurde. */ } }