Sie sind auf Seite 1von 7

4 Objektorientierung in Java, Teil 1

4.6 Gemischtes

4-21 (80)

4 Objektorientierung in Java, Teil 1

4.7 Zusammenfassende Fragen

4-22 (81)

4.6 Gemischtes
Frage: Wie kann man Konstanten definieren?

Frage: Java ist plattformunabhngig. Wie komme ich trotzdem an Informationen ber das Betriebssystem?

Deklariert man ein Klassenattribut oder Objektattribut mit dem Modifizierer final, so kann das Attribut
nach der erstmaligen Initialisierung nicht mehr gendert werden.

Antwort: Mit Hilfe der Klasse java.lang.System.

static final double ERDBESCHLEUNIGUNG = 9.81;


final double DICHTE_DES_OBJEKTS = 7.9;

4.7 Zusammenfassende Fragen


Was sind Klassen?

Frage: Wie kann man abfragen, von welcher Klasse ein Objekt erzeugt wurde?

Was sind Objekte?


Was sind Merkmale?
Was ist der Unterschied zwischen Identitt und quivalenz?

Antwort: Mit Hilfe der Methode getClass() oder mit dem Operator instanceof.

32
33
34
35
36

Wie deklariert man Konstruktoren?

Objektorientierung/Autos/09-instanceof/Auto.java
System.out.println(bmw.getClass());
// Ausgabe: class Auto
if (bmw instanceof Auto)
System.out.println("ist ein Auto");
if ("FIAT" instanceof String)
System.out.println("ist ein String");

Wie erzeugt man Objekte?


Wie deklariert man Objektattribute / Objektmethoden?
Wie greift man auf Objektattribute / Objektmethoden zu?
Wie deklariert man Klassenattribute / Klassenmethoden?

4 Objektorientierung in Java, Teil 1

Wie greift man auf Klassenattribute / Klassenmethoden zu?

4.7 Zusammenfassende Fragen

4-23 (82)

5 Objektorientierung in Java, Teil 2

5 Objektorientierung in Java, Teil 2

Wie arbeitet der Garbage Collector?


Was heit Datenkapselung?

Inhalt

Was sind Dokumentationskommentare?

5.1 Neues Konzept: Vererbung

Was bedeuten die Schlsselworte class, new, static, final?

5.2 Vererbung in Java


5.2.1 Typkonvertierungen
5.2.2 berlagerung und Binden
5.2.3 Die Referenz super
5.2.4 Verkettung von Konstruktoren
5.3 Datenkapselung
5.4 Packages
5.5 Zugriffsrechte bei Vererbung und Packages
5.6 Der Modifizierer final
5.7 Abstrakte Klassen
5.8 Interfaces
5.9 Object und Class
5.10 Wrapperklassen
5.11 Zusammenfassende Fragen

5-1 (83)

5 Objektorientierung in Java, Teil 2

5.1 Neues Konzept: Vererbung

5-2 (84)

5 Objektorientierung in Java, Teil 2

5.1 Neues Konzept: Vererbung

5-3 (85)

Drittes wichtiges Konzept


Objektorientierte Sprachen bieten die Mglichkeit der Vererbung. Wir haben die Mglichkeit, Merkmale
vorhandener Klassen auf neue Klassen zu bertragen (zu vererben).

Inhalt / Ziele: Wir lernen weitere Konzepte des objektorientierten Softwareentwurfs kennen. Wie konzentrieren uns dabei auf die Frage, wie in Java Vererbung, Interfaces, Zugriffsrechte, Packages usw. realisiert werden.

Bei der Abbildung der realen Welt nach Software lassen sich oft Hierarchien ausnutzen:

Oberklasse (Superklasse)

5.1 Neues Konzept: Vererbung

Gelndewagen

Auto

Sportwagen

Limousine

Unterklassen (Subklassen)
Frage:

Das Bild gibt eine Klassenhierarchie wieder. Die Subklassen Gelndewagen, Sportwagen und
Limousine erben von der Superklasse Auto. (Subklasse = Unterklasse, Superklasse = Oberklasse)

Wie lassen sich spezielle Autos verwalten, z. B. Gelndewagen, Sportwagen, Limousinen, . . . ?

Vererbung

Eine Subklasse erbt Attribute und Methoden von ihrer Superklasse (z. B. tachoStand,
fahren(double distanz). Sie kann diese verwenden, als wren sie in der Subklasse selbst
deklariert.

Wir haben gelernt, dass objektorientierte Sprachen wie Java Attribute und Methoden in Klassen vereinigen
und dass Datenkapselung fr die Einhaltung der Zusicherungen sorgt.

5 Objektorientierung in Java, Teil 2

5.1 Neues Konzept: Vererbung

5-4 (86)

5 Objektorientierung in Java, Teil 2

5.2 Vererbung in Java

Spezialisierung: In den Subklassen knnen die Methoden und Attribute der Superklasse entweder wiederverwendet oder berlagert werden. Zustzlich drfen die Subklassen um neue Methoden und
Attribute ergnzt werden.
Weitervererbung: Subklassen knnen selber weitervererbt werden. Soll eine Klasse nicht mehr weiter
vererbt werden knnen, kennzeichnet man dies durch das Schlsselwort final. Genauso kann man
das berlagern von Attributen und Methoden durch eine Subklasse verbieten.
Mehrfachvererbung: Java untersttzt keine Mehrfachvererbung, also das Erben von mehreren Superklassen. Als Alternative gibt es die so genannten Interfaces.
Abstrakte Klassen: Es besteht die Mglichkeit, Klassen so zu definieren, dass erst die Subklassen die
Definitionen mit Leben fllen mssen. Man kann diese Klassen erkennen an dem Schlsselwort
abstract. Solche Klassen knnen nicht instantiiert werden.

5.2 Vererbung in Java

In Java wird das Schlsselwort extends verwendet, um von anderen Klassen zu erben.

6
7
9
12
13
14
15
29
30
31
32
33
35
36
39
40
43

Objektorientierung/Autos/10-Vererbung/Limousine.java
public class Limousine extends Auto
{
int sicherheitsKategorie;
public Limousine()
{
this.sicherheitsKategorie = 3;
}
public void setzeSicherheitsKategorie(int sicherheitsKategorie)
{
if ((sicherheitsKategorie > 0) && (sicherheitsKategorie < 4))
this.sicherheitsKategorie = sicherheitsKategorie;
}
public int leseSicherheitsKategorie()
{ return this.sicherheitsKategorie; }
public void ausgeben()
{
}

5-5 (87)

5 Objektorientierung in Java, Teil 2

5.2 Vererbung in Java

5-6 (88)

5 Objektorientierung in Java, Teil 2

Quelltextanalyse

5.2 Vererbung in Java

Tier

Die Klasse Limousine erweitert die Klasse Auto.

alter

Ergnzung: Objektattribut sicherheitsKategorie

atmen()
schlafen()
essen()

Ergnzung: Objektmethoden setzeSicherheitsKategorie() (mit Zusicherung) und

leseSicherheitsKategorie()
berlagerung: Die Methode ausgeben() der Superklasse Auto wird neu definiert und erhlt eine
andere Implementierung.

berlagerung

Wo ist welche
Operation definiert?

Fleischfresser
essen()

Anderes Beispiel fr extends siehe 2.5:

jason: Katze
alter: 7

public class HelloApplet extends Applet


Katze

<<instance of>>

schlafen()
jagen()
schnurren()

5 Objektorientierung in Java, Teil 2

5.2 Vererbung in Java

5-8 (90)

5.2.1 Typkonvertierungen

5 Objektorientierung in Java, Teil 2

Kann man eine Referenz vom Typ Auto auf eine Instanz vom Typ Limousine verweisen lassen?
Und umgekehrt?

Wir unterscheiden prinzipiell zwischen erweiternden Typkonvertierungen und einschrnkenden


Typkonvertierungen.

52
56

Objektorientierung/Autos/10-Vererbung/Limousine.java
Limousine jaguar = new Limousine();
Auto meinPKW = new Auto();
meinPKW = jaguar;

5-9 (91)

Folgende Anweisungen sind also erlaubt:


59

Auto zweiCV = new Auto();


zweiCV.abschleppen(jaguar, 200);

Die Umwandlung eines Referenzdatentyps in eine seiner Subklassen nennen wir einschrnkende
Konvertierung. Sie muss mit dem Type-Cast-Operator vorgenommen werden und erfordert sorgfltige
Behandlung:
64
68
77

Die Umwandlung eines Referenzdatentyps in eine seiner Superklassen nennen wir erweiternde Konvertierung.

5.2 Vererbung in Java

int m;
byte j = 120;
m = j;

60

Hat eine Typkonvertierung irgendwelche Auswirkungen?

atmen()
schlafen()
essen()
jagen()
schnurren()

Erweiternde Konvertierungen werden in Java automatisch vorgenommen. Dies kennen wir schon bei
einfachen Datentypen:

Fragen: Objekte sind Referenzdatentypen.

48

5-7 (89)

Limousine daimler = new Limousine(5000, 2);


daimler = (Limousine)zweiCV; // Fehler
daimler = (Limousine)meinPKW; // OK, meinPKW ist Limousine
j = (byte)m;

5 Objektorientierung in Java, Teil 2

5.2 Vererbung in Java

5-10 (92)

5 Objektorientierung in Java, Teil 2

5.2.2 berlagerung und Binden

5-11 (93)

Objektorientierung/BindTest/1/BindTest.java

Frage: Welche Methoden ruft ein konvertiertes Objekt auf? Die der Subklasse oder die der Superklasse?

Wir haben gesehen, dass eine Variable der Klasse Auto


auf Objekte verschiedener Subklassen verweisen kann (z.B.
Limousine, Sportwagen). Jedes Objekt einer Subklasse ist gleichzeitig ein Objekt der Superklasse. (Eine
Limousine ist ein Auto. Ein byte ist ein int.)
Beim bersetzen mit javac kann der Compiler dann noch
nicht wissen, welche der berlagerten Methoden aufgerufen
werden soll.
Wir nehmen jetzt an, dass in einer Subklasse
Unterklasse Merkmale (= Attribute und Methoden)
der Superklasse Oberklasse berlagert werden.

5.2 Vererbung in Java

Oberklasse
inhalt
drucke()

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

class Oberklasse
{
String inhalt = "Attribut Oberklasse";
public void drucke() { System.out.println("Methode

Oberklasse" + "\n"); }

}
class Unterklasse extends Oberklasse
{
// berlagerung eines Attributs
String inhalt = "Attribut Unterklasse";
// berlagerung einer Methode
public void drucke() { System.out.println("Methode

Unterklasse" + "\n"); }

Welche Merkmale sind gemeint, wenn ein Objekt o der Superklasse ein Objekt u der Subklasse
zugewiesen bekommt?

berlagert

Welche Merkmale sind gemeint, wenn ein Objekt u der Subklasse als ein Objekt der Superklasse
verwendet wird?

Unterklasse

Diese Fragen beantwortet das Binden:


Dynamisches Binden liefert weiterhin das Merkmal der Subklasse = Typ des Objektes selbst.
Statisches Binden liefert dagegen das Merkmal der Superklasse = Typ der Referenzvariablen.

inhalt
drucke()

Java verwendet dynamisches Binden fr Methoden und statisches Binden fr Attribute.

5 Objektorientierung in Java, Teil 2

11
12
13
14
15
16
17
18
19
20
21
22
23
24

5.2 Vererbung in Java

5-12 (94)

Unterklasse u = new Unterklasse();


System.out.println(u.inhalt); // druckt Attribut Unterklasse
u.drucke();
// druckt Methode Unterklasse
Oberklasse o = new Oberklasse();
System.out.println(o.inhalt); // druckt Attribut Oberklasse
o.drucke();
// druckt Methode Oberklasse
o = u;
System.out.println(o.inhalt); // druckt Attribut Oberklasse
o.drucke();
// druckt Methode Unterklasse
System.out.println(((Oberklasse)u).inhalt); // druckt Attribut Oberklasse
((Oberklasse)u).drucke();
// druckt Methode Unterklasse

5.2.3 Die Referenz super


Die Referenz super knnen wir benutzen, um auf Merkmale einer Superklasse zu verweisen, die
berlagert wurden.
super veranlasst, dass die Suche nach der Methode, dem Attribut oder dem Konstruktor nicht in der
aktuellen Klasse, sondern erst in der unmittelbaren Superklasse beginnt.

5 Objektorientierung in Java, Teil 2

39
40
41
42
43

5.2 Vererbung in Java

Objektorientierung/Autos/10-Vererbung/Limousine.java
public void ausgeben()
{
super.ausgeben();
System.out.println("Kategorie = " + sicherheitsKategorie);
}
Objektorientierung/BindTest/2-super/BindTest.java

37
38
39
40
41
44
45
46
47
48
11
12
13
14
15
16
17

public void zeigeInhalte()


{
System.out.println("Eigener Inhalt:
" + inhalt);
System.out.println("berlagerter Inhalt: " + super.inhalt);
}
public void druckeAlles()
{
drucke();
super.drucke();
}
Unterklasse u = new Unterklasse();
u.zeigeInhalte();
// Eigener Inhalt:
Attribut Unterklasse
// berlagerter Inhalt: Attribut Oberklasse
u.druckeAlles();
// Methode Unterklasse
// Methode Oberklasse

5-13 (95)

5 Objektorientierung in Java, Teil 2

5.2 Vererbung in Java

5-14 (96)

5 Objektorientierung in Java, Teil 2

5.2.4 Verkettung von Konstruktoren


17

Ist die erste Anweisung eines Konstruktors eine normale Anweisung also kein Aufruf von this()
oder super() so ergnzt Java automatisch einen impliziten Aufruf von super() zum Aufruf
des Standardkonstruktors der Superklasse.
Nach Rckkehr von diesem Aufruf initialisiert Java die Instanzattribute der aktuellen Klasse und fhrt
mit der Ausfhrung der Anweisungen des aktuellen Konstruktors fort.
Ist die erste Anweisung eines Konstruktors der Aufruf eines Superklassenkonstruktors ber super(),
ruft Java den gewnschten Superklassenkonstruktor auf.
Nach Rckkehr von diesem Aufruf initialisiert Java die Instanzattribute der aktuellen Klasse und fhrt
mit der Ausfhrung der Anweisungen des aktuellen Konstruktors fort.
Ist die erste Anweisung eines Konstruktors der Aufruf eines berladenen Konstruktors ber this(),
ruft Java den gewnschten Konstruktor auf und fhrt danach einfach die Anweisungen im aktuellen
Konstruktor aus.
Der Aufruf des Superklassenkonstruktors vollzieht sich explizit oder implizit innerhalb des berladenen Konstruktors, so dass die Initialisierung der Instanzvariablen bereits dort stattgefunden hat.

18
19
20
21
22
23
24

5.3 Datenkapselung

5-15 (97)

Objektorientierung/Autos/10-Vererbung/Limousine.java
public Limousine(double tachoStand, int sicherheitsKategorie)
{
super(tachoStand);
if ((sicherheitsKategorie > 0) && (sicherheitsKategorie < 4))
this.sicherheitsKategorie = sicherheitsKategorie;
else
this.sicherheitsKategorie = 3;
}

5.3 Datenkapselung
Designmerkmale einer objektorientierten Sprache wie Java:
Klassen vereinigen Attribute, Methoden und Zusicherungen.
Vererbung erlaubt das bertragen von Merkmalen vorhandener Klassen auf neue Klassen.
Datenkapselung durch Zugriffsrechte.

Instantiierung von oben nach unten

5 Objektorientierung in Java, Teil 2

5.3 Datenkapselung

5-16 (98)

Klassen, ihre Attribute und Methoden knnen durch Zugriffsbezeichner modifiziert werden. Durch diese
Bezeichner kann man die Zugriffsrechte und -mglichkeiten genauer definieren.

Schlsselwort Beispiel

private
protected
public

private int i;
protected int i;
int i;
public int i;

Man benutzt Zugriffsrechte, um Datenkapselung zu erzielen. Um z. B. zu vermeiden, dass Objektattribute


unkontrolliert von auerhalb gendert werden knnen, kann man das Schlsselwort private verwenden.

10
11
27
28
41
42

13
14
15

5.4 Packages

5-17 (99)

5.4 Packages
Ein Package ist eine Sammlung verwandter Klassen, die Zugriffsrechte und Namensgebung verwaltet.

In Java unterscheidet man vier Zugriffsrechte:


Zugriffsrecht
private
protected
package
public

5 Objektorientierung in Java, Teil 2

Objektorientierung/Geld/1/Sparstrumpf.java
// Auf k kann von auen nicht zugegriffen werden.
private float k;
// Eine Methode, die von auen aufgerufen werden kann.
public float auszahlen(float r)
// Eine Methode, die nicht von auen aufgerufen werden kann.
private void umrechnenYen()
Objektorientierung/Geld/1/Test.java
bar = s.auszahlen(1000);
// System.out.println("Kapital = " + s.k); // Fehler b. Compilieren
// s.umrechnenYen();
// Fehler b. Compilieren

Es gibt im JDK bereits eine Reihe ntzlicher Packages, z. B. java.applet, java.awt, java.io,
java.net, javax.swing usw.
Das Package java.lang wird automatisch eingebunden. Es enthlt neben den elementaren Sprachkonstrukten auch die Klassen Math (3.7), System (4.6), Thread (13), Object (5.9), Class (5.9)
sowie diverse Wrapperklassen (5.10) fr einfache Datentypen.
Man kann natrlich auch eigene Packages erstellen.
Man kann Packages einbinden durch die Anweisung import.

Objektorientierung/Packages/Test.java
import autos.*;
Man kann Packages erzeugen durch die Anweisung package.
Objektorientierung/Packages/autos/Auto.java
1 package autos;
Objektorientierung/Packages/autos/Limousine.java
1 package autos;
1

Die Quelltextdateien sollten in einem gleichnamigen Unterverzeichnis liegen.

5 Objektorientierung in Java, Teil 2

5.4 Packages

5-18 (100)

5 Objektorientierung in Java, Teil 2

Objektorientierung/Packages/Test2.java
autos.Limousine jaguar = new autos.Limousine();

Siehe Objektorientierung/Zugriff/Test.java, Objektorientierung/Zugriff/paket/A.java,


Objektorientierung/Zugriff/paket/B.java, Objektorientierung/Zugriff/C.java,
Objektorientierung/Zugriff/paket/ASub1.java, Objektorientierung/Zugriff/ASub2.java.

Ab Java 5 kann bei einer statischen Funktion auf die Qualifikation durch den Klassennamen
verzichtet werden, wenn diese statisch importiert wird (siehe 3.7).
7

5-19 (101)

5.5 Zugriffsrechte bei Vererbung und Packages

Man kann Packages auch ohne import verwenden, wenn man den Klassennamen vollstndig
qualifiziert.
10

5.5 Zugriffsrechte bei Vererbung und Packages

Die Ergebnistabelle fasst die Zugriffsrechte zusammen:

Grundlagen/Math/MathBsp3.java
import static java.lang.Math.*;

Zugriff von
auf A/M mit Zugriffsrecht Klasse Unterklasse Package fremde Klasse

Trifft der Compiler javac auf eine import-Anweisung, so durchsucht er den CLASSPATH, um die
Verzeichnisse mit den Packages zu finden.

(aber nicht Package)

private
protected
package
public

Der Suchpfad kann beim Aufruf des Compilers mit der Option -classpath angegeben werden.
Gibt man beim Aufruf keinen speziellen Pfad an, so wird zuerst das aktuelle Verzeichnis und dann
das Standardverzeichnis der mitgelieferten JDK-Packages durchsucht.
Bentigt der Compiler Klassen, die noch nicht compiliert sind, so werden diese automatisch mit
bersetzt.

4
4

4
4

4
4

Zugriffsrechte wirken auf Attribute und Methoden gleich.


Das Attribut public ist zustzlich auch bei der Klassendeklaration von Bedeutung.
Nur Klassen, die als public deklariert wurden, sind auerhalb ihres Packages sichtbar.
Pro Java-Quelltextdatei darf nur eine public-Klasse angelegt werden.

5 Objektorientierung in Java, Teil 2

5.6 Der Modifizierer final

5-20 (102)

5 Objektorientierung in Java, Teil 2

5.7 Abstrakte Klassen

5-21 (103)

5.6 Der Modifizierer final


Modifiziert man ein Attribut mit dem Schlsselwort final, so darf sein Wert nicht mehr gendert
werden. Das Attribut kann man dann als Konstante verwenden.
Modifiziert man eine Methode mit dem Schlsselwort final, so darf sie nicht mehr berlagert werden. Das erspart dem Compiler das dynamische Binden und kann zur Geschwindigkeitsoptimierung
benutzt werden.
Modifiziert man eine Klasse mit dem Schlsselwort final, so darf sie keine Subklassen mehr
bilden.

5.7 Abstrakte Klassen

6
7
8
9

Objektorientierung/Geld/2/Wertpapier.java
public abstract class Wertpapier
{
public abstract float berechneWert();
}
Quelltextanalyse
Das Schlsselwort abstract kennzeichnet eine Klasse oder Methode als abstrakt.
Bei einer abstrakten Methode ersetzt ein Semikolon den Methodenkrper.
Eine abstrakte Klasse kann neben abstrakten Methoden durchaus normale (nicht abstrakte) Attribute und Methoden enthalten.
Von einer abstrakten Klasse knnen keine Instanzen gebildet werden.

Problem:
Es soll ein Wertpapierdepot verwaltet werden. Alle Wertpapiere sollen ber eine Methode
berechneWert() verfgen. Der Wert eines Sparbuchs berechnet sich aber ganz anders als der
von Aktien.

Wir sollten eine abstrakte Klasse Wertpapier mit einer abstrakten Methode berechneWert()
deklarieren. Jede Klasse, die davon erben will, muss dann eine konkrete Implementierung vornehmen.

5 Objektorientierung in Java, Teil 2

5.7 Abstrakte Klassen

5-22 (104)

5 Objektorientierung in Java, Teil 2

5.8 Interfaces

5-23 (105)

Um Objekte zu erzeugen, mssen wir zunchst eine Subklasse bilden:

6
25
26
27
28
29
30
31

5.8 Interfaces

Objektorientierung/Geld/2/Sparbuch.java
public class Sparbuch extends Wertpapier
public float berechneWert()
{
float wert = k;
for (int i = 1; i <= l; i++)
wert = wert * (1 + p);
return wert;
}

Problem: Die Steuererklrung steht an. Es sollte fr Autos, Sparbcher und Hunde eine einheitliche Methode berechneSteuer() geben. Leider gehren die Klassen zu verschiedenen Vererbungshierarchien.

Objektorientierung/Geld/2/Aktie.java
17
18
19
20

public float berechneWert()


{
return anzahl * kurswert;
}

Eine grundstzlich Designentscheidung der Java-Erfinder war, keine Mehrfachvererbung zu untersttzen.


Das heit, dass jede Klasse nur von einer einzigen Oberklasse erben kann.

Quelltextanalyse
Wir mssen dann die abstrakte Methode public float berechneWert() implementieren.

Nehmen wir einmal an, dass wir die folgenden Vererbungshierarchien aufgebaut haben:

Fr eine abgeleitete Klasse Aktie kann eine ganz andere Implementierung der Methode vorgenommen werden.

Object

Tier

Fleischfresser

Object

Auto

Limousine

Object

Wertpapier

Sparbuch

Hund

Von den Subklassen drfen wir Objekte instantiieren.

Objektorientierung/Geld/2/Depot.java
Sparbuch sb = new Sparbuch(5112.92f, 0.0125f, 5);
System.out.println(sb.berechneWert());

10
11

5 Objektorientierung in Java, Teil 2

Siehe Objektorientierung/Interfaces.

5.8 Interfaces

5-24 (106)

Nun mchten wir unsere Steuererklrung in Java programmieren. Zu versteuern sind alle Instanzen
der Klassen Hund, Auto und Sparbuch.
Es wre ntzlich, wenn fr jede dieser Klassen eine Methode berechneSteuer() zur Verfgung
stnde.
Mit der Hilfe von Interfaces bietet Java eine Konstruktion an, um solche Anforderungen zu lsen:
Wir erstellen zunchst ein Interface Steuer.

6
7
8
9

5 Objektorientierung in Java, Teil 2

6
7
18
19
20
21
22
23

Eine Klasse, die das Interface benutzen will, zeigt dies durch das Schlsselwort implements an.
Wir mssen dann alle Methoden des Interfaces implementieren, es sei denn, die implementierende
Klasse ist abstrakt.

Objektorientierung/Interfaces/Hund.java
public class Hund extends Fleischfresser implements Steuer
{
public double berechneSteuer()
{
double steuerBetrag = 120;
return steuerBetrag;
}
}
Siehe Objektorientierung/Interfaces/Auto.java.
Siehe Objektorientierung/Interfaces/Limousine.java.

Nun verfgen alle Objekte dieser Klassen ber eine Methode berechneSteuer(), die man so
verwenden kann:

Alle Methoden sind automatisch public.


Interfaces drfen keine nicht abstrakten Methoden enthalten.

5-25 (107)

Siehe Objektorientierung/Interfaces/Sparbuch.java.

Objektorientierung/Interfaces/Steuer.java
public interface Steuer
{
double berechneSteuer();
}

Dort listen wir die Methoden auf, die implementiert werden mssen, wenn wir das Interface benutzen
wollen.

5.8 Interfaces

10
11
15
16
17
18

Objektorientierung/Interfaces/Test.java
Hund bello = new Hund();
Sparbuch sb = new Sparbuch(1200, 0.015f, 1);
double steuern;
steuern = bello.berechneSteuer();
System.out.println(steuern);
steuern += sb.berechneSteuer();

Eine Klasse kann mehrere Interfaces implementieren.