Einführung in die OOP in Java

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
der Universität Oldenburg
Objektorientierte Programmierung
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Einführung in die OOP in Java
Einführung in die Programmierung mit Java
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Objektorientierte Programmierung
EPROG Tutorium #6 Philipp Effenberger
Programmiervorkurs WS 2014/15 Instanzmethoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Einführung in die OOP in Java
Abstrakte Klassen und das Interface-Konzept
Java Programme nur ein bisschen objektorientiert.
Objektorientierte Programmierung mit JAVA. © Klasse Wie in C++ ist die Klasse das primäre Mittel um ein Entity abzubilden Die Eigenschaften.
C++ FÜR cOMPUTERSPIELENTWICKLER
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
, PD Dr. Wolfram Amme, Tutorium zum Programmierpraktikum, FSU Jena, WS 2006/07 1 Objekte in Java.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Kapselung von Daten I Gründe für die Datenkapselung Datenkonsistenz leichtere.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Definition Felder Konstruktor Methoden Beispiel
Implementieren von Klassen
 Präsentation transkript:

Einführung in die OOP in Java Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker Einführung in die OOP in Java WS 07/08 Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de Java-Intensivkurs WS07/08 Folie 1

Referenzen in Java Unterschied zwischen einer primitiven Variablen und einer Referenzvariablen: semesteranzahl speichert den tatsächlichen Wert der Variablen (3) studiengang speichert eine Referenz auf ein String-Objekt, dessen Wert „BWL“ ist public class Student { public String name;//Referenzvariable (Objektreferenz) public Date gebDatum;// Referenzvariable (Objektreferenz) public String studiengang;// Referenzvariable (Objektreferenz) public int semesteranzahl; //primitive Variable } Student student = new Student("Alex", null, "BWL",3); Java-Intensivkurs WS07/08 Folie 2

Student student = new Student("Alex", null, "BWL",3); Referenzen in Java Der new-Operator liefert eine Referenz auf das erzeugte Objekt zurück Die Referenz wird dann in der Variablen student gespeichert Student student = new Student("Alex", null, "BWL",3); Java-Intensivkurs WS07/08 Folie 3

Referenzen Man sagt, daß die Variable das Objekt referenziert bzw. darauf zeigt In manchen Implementierungen der JVM wird eine Referenz als Speicheradresse implementiert Eine Referenzvariable speichert dann die Speicheradresse ihres Objektes null-Referenz Zeigt auf kein Objekt und speichert den Wert null Java-Intensivkurs WS07/08 Folie 4

Referenzen Referenzvariablen werden standardmäßig mit null initialisiert bevor ihnen ein Objekt zugewiesen wird Java-Intensivkurs WS07/08 Folie 5

this & super Neben den eigenen und geerbten Attributen einer Klasse, verfügen die Instanzmethoden und die Konstruktoren über zwei weitere Referenzen this: Referenz auf das Objekt selbst super: Referenz auf das Objekt der Oberklasse Java-Intensivkurs WS07/08 Folie 6

this this-Referenz wird verwendet zur: Unterscheidung zwischen einer Objektvariablen und einer übergebenen Variablen innerhalb einer Methode oder eines Konstruktors x2 ist der übergebene Parameter this.x2 ist das Objektattribut, die ebenfalls x2 heißt public Line(float x2, float y2){ this.x2=x2; this.y2=y2; } Java-Intensivkurs WS07/08 Folie 7

super Analog kann innerhalb einer Klasse mit super auf die Attribute und Methoden der Oberklasse zugegriffen werden public void translate(float dx, float dy) { x2 += dx; y2 += dy; // Wiederverwendung des Codes der Oberklasse super.translate(dx, dy); } Java-Intensivkurs WS07/08 Folie 8

this(), super() public Line(float x2, float y2) { this.x2 = x2; this.y2 = y2; } public Line(float x1, float y1,float x2, float y2){ this(x2,y2);//Aufruf des eigenen Konstruktors //Line(float x2, float y2) this.x1=x1; this.y1=y1; Java-Intensivkurs WS07/08 Folie 9

super() sdfadsf public Line(float x1, float y1,float x2, float y2){ super(x1,y1);//Aufruf des Konstruktors der Oberklasse this.x2=x2; this.y2=y2; } Aufruf von this() und super() muss als erste Anweisung im Konstruktor erfolgen Aufruf von this.eineMethode() oder super.eineMethode() muss nicht als erste Anweisung erfolgen Java-Intensivkurs WS07/08 Folie 10

Klassen- & Instanzattribute Zwei Arten von Attributen: Klassen- und Instanzattribute Klassenattribute (statische Attribute): Werden mit dem Schlüsselwort static deklariert public static String vorgesetzter; Java-Intensivkurs WS07/08 Folie 11

Klassen- & Instanzattribute public class Mitarbeiter { public static String vorgesetzter="Oliver P.";//Klassenvariable public String abteilung;//Instanzvariable //statische Methode public static void vorgesetzterWechsel(String neuerVorgesetzter) { vorgesetzter = neuerVorgesetzter; } public void abteilungWechsel(String neueAbteilung){ abteilung=neueAbteilung; Java-Intensivkurs WS07/08 Folie 12

Klassen- & Instanzattribute public static void main(String [] str){ Mitarbeiter nadia=new Mitarbeiter("Nadia O.","Marketing"); Mitarbeiter klaus=new Mitarbeiter("Klaus M.", "Controlling"); nadia.abteilungwechsel("Finanz"); klaus.vorgesetzterWechsel("Paul J."); System.out.println(nadia.abteilung); System.out.println(klaus.abteilung); System.out.println(nadia.vorgesetzter); System.out.println(klaus.vorgesetzter); }} Ausgabe: Finannz Controlling Paul J. Paul J. Java-Intensivkurs WS07/08 Folie 13

Klassenattribute Sind an die Existenz eines Objektes nicht gebunden Von jedem statischen Attribut v existiert genau eine einzige Kopie für alle Objekte der Klasse Alle Objekte sehen den gleichen Wert für v. Zugriff über: Klassennamen z.B. Mitrabeiter.vorgesetzter Instanznamen nadia.vorgesetzter Java-Intensivkurs WS07/08 Folie 14

Instanzattribute (nicht statische Attribute) Jedes Objekt speichert eine eigene Kopie seiner Objektattribute Die Änderung des Wertes eines Instanzattributes in einem Objekt hat keine Auswirkung auf die anderen Objekte Sind an die Existenz eines Objektes gebunden Zugriff über Klassenamen z.B. Mitarbeiter.name nicht möglich Java-Intensivkurs WS07/08 Folie 15

Klassenmethoden (statische Methoden) Wird mit dem Schlüsselwort static Ist an die Existenz eines Objektes nicht gebunden Kann über den Klassennamen und die Objektreferenz aufgerufen werden //statische Methode public static void vorgesetzterWechsel(String neuerVorgesetzter){ vorgesetzter = neuerVorgesetzter; } public static void main(String [] str) Math.sin(a); Math.cos(a); Math.sqrt(a) Float.parseFloat(s) Java-Intensivkurs WS07/08 Folie 16

Instanzmethoden (nicht statische Methoden) Ist an die Existenz eines Objektes nicht gebunden Kann nur über ein Objektreferenz aufgerufen werden Java-Intensivkurs WS07/08 Folie 17

Statische Initialisierer Konstruktoren werden in der Regel verwendet um Variablen zu initialisieren Für komplexe Initialisierung von Klassenvariablen können sog. statische Initialisierer verwendet werden Codeblöcke innerhalb einer Klasse, die mit dem Schlüsselwort static deklariert sind Werden nur ein einziges Mal beim Laden einer Klasse aufgerufen Java-Intensivkurs WS07/08 Folie 18

Statische Initialisierer Dürfen nur auf die Klassenattribute zugreifen und haben somit weder Zugriff auf die this-Referenz noch auf die Instanzattribute der Klasse Eine Klasse kann beliebig viele statische Initialisierer enthalten. Java-Intensivkurs WS07/08 Folie 19

Statische Initialisierer public class InitializationDemo { //Klassenvariablen public static Date date; public static int classLuckyNumber; public static int numberOfCreatedInstances; static{//Statischer Initialisierer date=Calendar.getInstance().getTime(); Random rand=new Random(); int number=rand.nextInt(10); classLuckyNumber=number*number; } Java-Intensivkurs WS07/08 Folie 20

Nicht statische Initialisierer Sie ähneln Konstruktoren Werden unmittelbar vor dem Aufruf eines Konstruktors aufgerufen Werden zur Initialisierung von Instanz- und Klassenattributen verwendet Dürfen auf die this-Referenz zugreifen Eine Klasse kann beliebig viele Initialisierer enthalten Java-Intensivkurs WS07/08 Folie 21

Nicht statische Initialisierer public class InitializationDemo { public int instanceNumber;//Instanzvariable public int instanceLuckyNumber;//Instanzvariable {//nicht-statischer Initialisierer Random rand=new Random(); instanceNumber=rand.nextInt(10); System.out.println(); this.instanceLuckyNumber=rand.nextInt(10); } Java-Intensivkurs WS07/08 Folie 22

Initialisierungsreihenfolge Beim Laden einer Klasse: 1. Alle statischen Attribute werden in der Reihenfolge initialisiert, in der sie in ihrer Klasse vorkommen 2. Aufruf der statischen Initialisierer Folgendes passiert, wenn ein Objekt mit dem new-Operator instanziiert werden soll: 1. Instanzattribute werden initialisiert 2. Nicht statischen Initialisierer werden aufgerufen 3. Aufruf des Konstruktors Beispiel: Siehe InitializationDemo.java Java-Intensivkurs WS07/08 Folie 23

Call-By-Reference oder Call-By-Value? Übergabe von primitiven Variablen: JVM stellt eine Kopie der Variablen und übergibt sie an die Methode  Veränderung der Kopie innerhalb der Methode hat keine Wirkung auf den Variablenwert Übergabe von Referenzen: Eine Kopie der Referenz (nicht das Objekt) wird erstellt und an die Methode übergeben  Jede Änderung des Objektes innerhalb der Methode ist nach außen sichtbar Java-Intensivkurs WS07/08 Folie 24

Call-By-Reference oder Call-By-Value? Fazit: Parameterübergabe erfolgt per call-by-value Siehe CallByValue.java Java-Intensivkurs WS07/08 Folie 25

Pakete (packages) Package: Sammlung von logisch zusammengehörenden Klassen, Interfaces und anderen Typen Dienen der logischen Gruppierung von Klassen In anderen Programmiersprachen: Programmierbibliotheken Alle Klassen der Java-API sind in Pakete unterteilt Z.B. die Math, String, Wrapper-Klassen in java.lang Java-Intensivkurs WS07/08 Folie 26

Pakete Ein Paketname besteht aus mehreren durch Punkt getrennten Bezeichnern: Physikalisch werden Pakte auf eine hierarchische Verzeichnisstruktur abgebildet: Jeder Bezeichner entspricht dabei einem Verzeichnis Verzeichnisse sind ineinander verschachtelt //package declaration package de.frankfurt.uni.cs.gdv.visian3d.datastructures.trees; Java-Intensivkurs WS07/08 Folie 27

Pakete Der voll qualifizierte Name einer Klasse A innerhalb des Paketes de.frankfurt.uni.cs.gdv.datastructures.trees ist de.frankfurt.uni.cs.gdv.datastructures.trees.A java.lang.String ist der voll qualifizierte Name der Klasse String Die Java-API 6.0 enthält etwa 202 Pakete, die 3777 Klassen und Interfaces umfassen Siehe Demo zum anlegen von Paketen Java-Intensivkurs WS07/08 Folie 28

Import Will eine Klasse z.B. die Klassen oder die Interfaces, eines Paketes verwenden, so müssen diese durch eine import-Anweisung importiert werden, ehe sie benutzt werden können Eine Klasse zu importieren bedeutet sie samt ihren Attributen und Methoden verfügbar zu machen Ihr Name wird in den Namensraum der Codedatei eingefügt import java.util.Random; Java-Intensivkurs WS07/08 Folie 29

Import Nur Klassen, die nicht im eigenen Paket liegen müssen importiert werden Ausnahme stellen hier die Bestandteile des Pakets java.lang Da dieses Paket eines der wichtigsten Pakete der Java-API ist werden alle in ihm enthaltenen Klassen vor jedem Compilerlauf automatisch importiert //importiert alle Klassen und Interfaces import java.util.*; //importiert ArrayList import java.util.ArrayList; Java-Intensivkurs WS07/08 Folie 30

Statischer Import Gibt es erst seit Version 5 Außerhalb einer Klasse können ihre statischen Funktionen und Konstanten nur über den Klassennamen angesprochen werden Werden die Bestandteile einer Klasse statisch importiert, so können ihre statischen Methoden und Attribute ohne Klassennamen sofort benutzt werden long longMaxValue=Long.MAX_VALUE; Java-Intensivkurs WS07/08 Folie 31

Statischer Import //non static import of java.lang.Math import java.lang.Math.*; //eigentlich überflüssig class WithoutStaticImport{ public static void main(String... args) { System.out.println("Wurzel aus "+Math.PI+" ist "+Math.sqrt(Math.PI)); }} //static import of java.lang.Math import static java.lang.Math.*; public class StaticImport { public static void main(String... args) { System.out.println("Wurzel aus "+PI+" ist "+sqrt(PI)); }} Java-Intensivkurs WS07/08 Folie 32

Datenkapselung und Modifikatoren (modifier) Durch Datenkapselung sollen einem Objekt nur diejenigen Bestandteile einer Klasse zugänglich gemacht werden, die für das Objekt relevant sind Alles Andere bleibt verborgen Zur Unterstützung des Datenkapselungsaspektes definiert Java sog. Modifier Java-Intensivkurs WS07/08 Folie 33

Modifier Modifier: Schlüsselwörter Teilen dem Compiler Informationen mit, wie z.B. Sichtbarkeit, Veränderbarkeit und Lebensdauer von Klassen, Variablen, Konstruktoren, Methoden und Initialisierer public, private und protected werden als access-Modifier (Zugriffsmodifikatoren) bezeichnet //modifier public, private, protected, final, abstract, static, native, transient, synchronized, volatile Java-Intensivkurs WS07/08 Folie 34

Modifier Features einer Klasse: Variable, Methode, Konstruktor oder die Klasse selbst Auf als public deklarierte Features kann in jeder Klasse ohne Einschränkung zugegriffen werden private Features können nur innerhalb ihrer eigenen Klasse verwendet werden Java-Intensivkurs WS07/08 Folie 35

Modifier Wird ein Feature ohne Modifier deklariert, so kann auf dieses nur innerhalb von Klassen zugegriffen werden, die im eigenen Paket liegen Man spricht hier von einem default-Zugriff protected: Nur zur Deklaration von Attributen, Methoden und Konstruktoren (nicht für Klassen) Auf ein protected-Feature einer Klasse kann innerhalb aller Klassen seines Pakets uneingeschränkt zugegriffen werden Java-Intensivkurs WS07/08 Folie 36

protected Außerhalb vom eigenen Paket können nur Unterklassen auf das Feature zugreifen, und zwar eingeschränkt Eingeschränkt bedeutet: Ein Zugriff ist nur außerhalb von Methoden und Konstruktoren erlaubt: Java-Intensivkurs WS07/08 Folie 37

protected package modifier1; public class ModifierClass { protected byte protectedVar = 3; } package modifier1; public class ForignClassInTheSamePackage { public static void main(String... arg) { System.out.println(modifier.protectedVar); }} Java-Intensivkurs WS07/08 Folie 38

protected package modifier2; import modifier1.ModifierClass; public class SubClassOfModifierClass extends ModifierClass { byte protected1=protectedVar;// erlaubter Zugriff auf } public static void main(String... arg) { System.out.println(modifier.protectedVar);//Kompilierfehler Java-Intensivkurs WS07/08 Folie 39

final Kann für Klassen, Variablen, und Methoden verwendet werden final-Klasse kann nicht abgeleitet werden: Beispiel für eine final-Klasse ist die Klasse java.lang.Math Der Wert einer final-Variablen kann nach ihrer Initialisierung nicht mehr verändert werden public class MyMath extends Math{//Kompilierfehler } Kompilierfehler: The Type MyMath cannot subclass the final class Math Math.PI=22/7f; Fehlermeldung: The final field Math.PI cannot be assigned. Java-Intensivkurs WS07/08 Folie 40

final final-Methoden dürfen nicht überschrieben werden. public class Final { public int x=2; public final void setX(int x){this.x=x;} public final void setX(){this.x=x;} } class FinalApplication extends Final{ public final void setX(){//Kompilierfehler public static void main(String ...strings ){ final Final x=new Final(); x.x=2; Kompilierfehler: Cannot override the final method. Java-Intensivkurs WS07/08 Folie 41

Abstrakte Klassen und Methoden Es kommt häufig vor, dass der Programmierer das Verhalten einer Methode in einer Superklasse nicht definieren kann Beispiel: Java-Intensivkurs WS07/08 Folie 42

Abstrakte Klassen und Methoden public abstract class GeometricObject { public static final int CIRCLE=0; public static final int RECTANGLE=1; public static final int TRIANGLE=2; public static final int UNDEFINED=-1; public int type= UNDEFINED; public abstract float getSurface();//abstract method public int getType(){//concrete method return type; } } Java-Intensivkurs WS07/08 Folie 43

Abstrakte Klassen und Methoden Die Methode getSurface() der Klasse GeometricObject soll die Fläche des geometrischen Objektes berechnen und zurück liefern Da die Fläche eines geometrischen Objektes von seiner konkreten Implementierung abhängt, ist eine sinnvolle Implementierung der Methode getSurface() in der Oberklasse nicht möglich In so einem Fall wird die Methode als abstract deklariert Java-Intensivkurs WS07/08 Folie 44

Abstrakte Klassen und Methoden class Rectangle extends GeometricObject{ public float width; public float height; public Rectangle(float width, float height){ this.width=width; this.height=height; this.type=GeometricObject.RECTANGLE; } public float getSurface(){ return width*height; Java-Intensivkurs WS07/08 Folie 45

Abstrakte Klassen und Methoden class Triangle extends GeometricObject{ public float base; public float height; public Triangle(float base, float height){ this.base=base; this.height=height; this.type=GeometricObject.TRIANGLE; } public float getSurface(){ return .5f*base*height; Java-Intensivkurs WS07/08 Folie 46

Abstrakte Klassen und Methoden class Circle extends GeometricObject{ public float radius; public float getSurface(){ return (float)(Math.PI*radius*radius); } Java-Intensivkurs WS07/08 Folie 47

Abstrakte Methoden Die Implementierung der Methode wird dann den Unterklassen überlassen Eine als abstract deklarierte Methode wird abstrakte Methode genannt Besteht sie nur aus einer Deklaration (nur Methodenkopf) Hat keinen Methodenrumpf (keine Implementierung) Anstelle der geschweiften Klammern des Methodenrumpfes wird ein Semikolon gesetzt //abstract method public abstract float getSurface(); Java-Intensivkurs WS07/08 Folie 48

Abstrakte Klassen Eine Klasse, die mindestens eine abstrakte Methode enthält, muss als abstract deklariert werden Abstrakte Klassen können nicht instanziiert werden Eine Unterklasse der abstrakten Klasse, erbt nun die abstrakten Methoden und muss diese überschreiben Tut sie das nicht, muss sie selbst als abstrakte Klasse definiert werden Eine abstrakte Klasse kann auch konkrete Methoden enthalten Java-Intensivkurs WS07/08 Folie 49