Java Kurzanleitung Kapitel 1 Kontrollstrukturen:

Ähnliche Dokumente
Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Methoden und Wrapperklassen

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Einfache Datentypen in JAVA

1 Klassen anlegen und Objekte erzeugen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

1 Klassen anlegen und Objekte erzeugen

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

JAVA-Datentypen und deren Wertebereich

Umsetzung einer Klassenkarte in einer Programmiersprache

Javakurs für Anfänger

Begriffe 1 (Wiederholung)

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Kleines Java-Glossar zum Praktikum Einführung in das Programmieren

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

3. Anweisungen und Kontrollstrukturen

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Javakurs für Anfänger

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Computeranwendung und Programmierung (CuP)

Java Datentypen und Variablen

Die Klasse java.lang.object. Thorsten Treffer

Kapitel 3: Variablen

Anweisungen zur Ablaufsteuerung

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Einstieg in die Informatik mit Java

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Algorithmen und Datenstrukturen

Einstieg in die Informatik mit Java

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Java: Eine kurze Einführung an Beispielen

Objektorientierte Programmierung Studiengang Medieninformatik

Grundwissen Informatik JS Oktober 2016

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Repetitorium Informatik (Java)

JAVA - Methoden

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

AuD-Tafelübung T-B5b

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Probeklausur Informatik 2 Sommersemester 2013

Der Datentyp String. Stringvariable und -vergleiche

Objektorientierung (OO)

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

RO-Tutorien 3 / 6 / 12

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 28. Februar 2003

Einführung in die Programmierung mit VBA

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Java Einführung Vererbung und Polymorphie. Kapitel 13

Programmieren in Java

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Java Einführung Methoden in Klassen

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

3 Objektorientierte Konzepte in Java

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

C++ - Objektorientierte Programmierung Vererbung

Modul 122 VBA Scribt.docx

Vorkurs Informatik WiSe 16/17

JAVA - Methoden - Rekursion

Kapitel 6. Vererbung

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

3.2 Datentypen und Methoden

Grundwissen Informatik JS Dezember 2017

Programmieren in Java

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Einführung in die Programmierung für NF MI. Übung 04

Lernteam OOP3 SW Programmieren 1 - H1103 Felix Rohrer

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einstieg in die Informatik mit Java

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Probeklausur: Programmierung WS04/05

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

PROGRAMMIERUNG IN JAVA

Programmieren I + II Regeln der Code-Formatierung

Unterlagen. CPP-Uebungen-08/

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Überschreiben von Methoden

Einstieg in die Informatik mit Java

Transkript:

Java Kurzanleitung Kapitel 1 Kontrollstrukturen: 1. If-Befehl (Bedingte Anweisung) Die bedingte Anweisung besteht aus einer Bedingung, deren Wahrheitswert wahr oder falsch sein kann. Ist der Wahrheitswert wahr, wird Anweisungsblock 1 ausgeführt, ist der Wahrheitswert falsch, wird der Anweisungsblock 2 ausgeführt. Die else-anweisung kann auch weggelassen werden. 2 Fälle: if (Bedingung) { Anweisungsblock1 else { Anweisungsblock 2 3 Fälle: if (Bedingung1) { Anweisungsblock1 else if (Bedingung2) { Anweisungsblock 2 else { Anweisungsblock 3 Beispiel für 2 Fälle: if (huegelvorhanden ( rechts )){ else { drehe ( rechts ); 2. switch-befehl (Verzweigte Anweisung) Die verzweigte Anweisung führt auf der Grundlage eines Wertes einen bestimmten Anweisungsblock aus. Durch den break-befehl wird jeder Anweisungsblock beendet. Mit dem default-befehl kann ein Anweisungsblock in allen Fällen ausgeführt werden, die nicht vorher aufgeführt sind. switch (Ausdruck){ case Wert1: Anweisungsblock1; case Wert2: Anweisungsblock2; case Wert3: Anweisungsblock3; default: AnweisungsblockN switch (aktuellesfahrzeug){ case 0: zweirad = roller; case 1: zweirad = harley; case 2: zweirad = honda; case 3: zweirad = yamaha; 3. while-schleife (Wiederholungsschleife) Die Wiederholungsschleife wiederholt einen Anweisungsblock solange, bis die vor dem Anweisungsblock angegebene Bedingung nicht mehr erfüllt ist. while (Bedingung){ Anweisungsblock while (huegelvorhanden ( rechts ()){ Alternativ kann die Bedingung auch nach der Ausführung des Anweisungsblockes geprüft werden: do{ Anweisungsblock while (Bedingung) do{ while (huegelvorhanden ( rechts ))

4. for-schleife (Zählschleife) Die Zählschleife wiederholt einen Anweisungsblock so lange, bis eine angegebene Bedingung erstmals falsch wird. In der Zählschleife wird eine Zählvariable deklariert und mit einem Anfangswert definiert. Der Wert der Schleifenvariable wird nach jedem Schleifendurchlauf aktualisiert. Zählschleifen können benutzt werden, um einen Anweisungsblock eine vorher festgelegte Anzahl mal zu wiederholen. for (Initialisierung; Bedingung; Aktualisierung){ Anweisung for (int i = 0; i < 11; i = i + 1){ Kapitel 2: Datentypen in Java: 1. Primitive Datentypen: Typ Speicherplatz Wertebereich Beispiel boolean 1 Bit True, false True, false char 16 Bit A,..Z,a..z,1..9,., :, /, a, Z, 1 byte 8 Bit -128 bis 127 1345, -12, 0, 897 short 16 Bit -32768 bis 32767 7823, -999. 0, 12 int 32 Bit -2147483648 bis 2147483647 234567, -89999 long 64 Bit -9223372036854775808 bis 98, - 5678456 9223372036854775807 float 1.4E-45 bis 3.41 E 38 1.23, -4,987654321 double 4.9E-324 bis 1,79 E 308 3.5678, -4444.5555 Primitive Datentypen müssen vor ihrer Benutzung deklariert werden. Dabei wir einem Variablennamen ein Datentyp zugewiesen. Die erste Zuweisung eines Wertes nennt man Initialisierung. Deklaration Datentyp bezeichner1; int anzahl; Initialisierung bezeichner1 = wert; Anzahl = 6 Deklaration und Initialisierung können auch in einem Schritt durchgeführt werden: int anzahl = 6; 2. Komplexe Datentypen: Komplexe Datentypen werden innerhalb einer eigenen Klasse definiert. Die Deklaration erfolgt in der Regel vor dem Konstruktor der Klasse, in der der komplexe Datentyp Deklariert wird. Die Initialisierung kann innerhalb jeder Methode dieser Klasse erfolgen. Komplexe Datentypen werden referenziert, d. h. es wird eine Referenz auf einen bestimmten Speicherbereich (Speicheradresse) festgelegt. Deklaration Klassenname bezeichner1; Fahrzeug roller; Initialisierung bezeichner1 = new Klassenname(); roller = new Fahrzeug(20,0.03,100,10); Deklaration und Initialisierung können auch in einem Schritt durchgeführt werden: Fahrzeug roller = new Fahrzeug(20,0.03,100,10); Vergleichsoperatoren für primitive Datentypen: Operator Beschreibung Mögliche Datentypen Beispiel == ist gleich alle a == true!= ist ungleich alle b!= 5 > bzw. < ist kleiner bzw. größer alle außer boolean d > 6 >= bzw. <= größer oder gleich alle außer boolean e <= Schmitz

Vergleichsoperatoren für Komplexe Datentypen: Auch komplexe Datentypen lassen sich miteinander vergleichen. Es dürfen nur die Operatoren == und!= benutzt werden. Gleich sind Objekte nur, wenn Sie auf das gleiche Objekt verweisen. Objekte mit identischen Attributswerten aber unterschiedlichen Identitäten (d. h. verschiedene Instanzen einer Klasse wurden definiert) sind nicht gleich, wenn sie mit == verglichen werden. Kapitel 3: Klassen in Java Definition einer neuen Klasse: public class Fahrzeug { private double tankgröße; private double spritprokm; private double tankinhalt; private int kilometerstand; public Fahrzeug(double ptankgröße, double pspritprokm, int pkmstand, double ptankinhalt) { tankgröße = ptankgröße; spritprokm = pspritprokm; kilometerstand = pkmstand; tankinhalt = ptankinhalt; Attribute Parameter Konstruktor Übergabe der Parameterwerte an die Variablenfelder Erzeugung von Objekten einer Klasse in der aufrufenden Klasse: public class Gui{ Deklaration neuer Objekte Fahrzeug roller,harley,honda,yamaha,zweirad; public Gui() { roller = new Fahrzeug(20,0.03,100,10); harley = new Fahrzeug(40,0.05,100,20); Instanzierung neuer Objekte Innerhalb einer Klasse können verschiedene Objekte verwaltet werden, die alle ähnliche Eigenschaften haben. Die Klasse bietet insbesondere verschiedene Variablenfelder an, d. h. Variablen, die für jedes Objekt der Klasse getrennt gespeichert werden (z. B. hat jedes Fahrzeug einen eigenen Kilometerstand, Tankgröße usw.). Definition einer neuen Klasse: Die Definition einer neuen Klasse beginnt mit dem Access Modifier public und dem Schlüsselwort class gefolgt von dem neuen Klassennamen (hier Fahrzeug). Danach werden alle Variablenfelder deklariert, die für jedes Objekt der Klasse angelegt werden sollen. Es folgt der Konstruktor der Klasse. Er beginnt mit dem Access Modifier public gefolgt von dem Klassennamen. Anschließend wird in Klammern für jede der deklarierten Variablenfelder ein Parametername zusammen mit seinem Datentypen angegeben. Der Parametername entspricht in der Regel dem Namen des Variablenfeldes nach dem Buchstaben p (für Parameter). Bei der Erzeugung eines Klassenobjektes wird jeder Parametervariablen der gewünschte Variablenwert übergeben. Im Anweisungsblock wird anschließend in der Regel jedem Variablenfeld der Wert der Parametervariablen übergeben, z. B. tankgröße = ptankgröße. Erzeugung eines neuen Objektes einer Klasse: Bevor ein Objekt erzeugt wird, muss zunächst der Name des Objektes deklariert werden: Dabei schreibt man den Klassennamen gefolgt von dem neuen Objektnamen, mehrere Objekte der gleichen Klasse können in einem Befehl erzeugt werden: Fahrzeug roller,harley,honda,yamaha,zweirad; Anschließend kann mit dem new-befehl ein Objekt der Klasse erzeugt werden, diesen Vorgang nennt man Instanzierung, d. h. es wird eine Instanz der Klasse erzeugt: roller = new Fahrzeug(20,0.03,100,10); Nach dem neuen Objektnamen folgen die Schlüsselwörter = und new, danach wird der Klassenname angegeben. In Klammern wird für jede Parametervariable ein Wert zugewiesen.

Die Parametervariablen werden somit beim Erzeugen mit den angegeben Werten gefüllt. In der Regel wird im Konstruktor anschließend dem Variablenfeld der Wert aus dem Parametervariablen weitergeleitet. Der Parameter ptankgröße erhält den Wert 20 roller = new Fahrzeug(20,0.03,100,10); Der Wert des Parameters ptankgröße wird in das Variablenfeld Tankgröße übertragen: tankgröße = ptankgröße; public Fahrzeug(double ptankgröße, double pspritprokm, ) Get und Setmethoden: Mit einer Get-Methode kann der Wert eines Variablenfeldes einer Klasse an die aufrufende Klasse ausgelesen werden: Getmethode in der Klasse Fahrzeug, die das Variablkenfeld kilometerstand verwaltet: Aufruf der Getmethode in der Klasse Gui, die auf die Klasse Fahrzeug zugreift: public int getkilometerstand() { return kilometerstand; Roller1.getKilometerStand(); Nach dem Schlüsselwort public folgt der Variablentyp (hier int), indem der Variablenwert zurückgegeben werden soll. Der Variablenwert wird mit dem Befehl return zurückgegeben. Mit einer Set-Methode kann der Wert eines Variablenfeldes aus der aufrufenden Klasse heraus verändert werden: Setmethode in der Klasse Fahrzeug, die das Variablenfeld kilometerstand verwaltet: Aufruf der Setmethode in der Klasse Gui, die auf die Klasse Fahrzeug zugreift: public void setkilometerstand(int pstrecke) { kilometerstand = pstrecke; Roller1.setKilometerStand(100); Da die Setmethode keinen Variablenwert zurückgegeben werden, wird nach dem Schlüsselwort public, statt eines Variablentypes das Schlüsselwort void (leer) verewendet. Weitere Methoden: Methode fahre in der Klasse Fahrzeug, die die Variablenfelder kilometerstand und tankinhalt verwaltet: public void fahre(int pstrecke) { double spritverbrauch = spritprokm * pstrecke; kilometerstand = kilometerstand + pstrecke; tankinhalt = tankinhalt - spritverbrauch; Aufruf der Methode fahre in der Klasse Gui, die auf die Klasse Fahrzeug zugreift: roller1.fahre (100); Weitere Methoden können deklariert werden, die die Werte der Variablenfelder der Klasse verändern können. Die Methoden können Variablenwerte zurückgeben (Der Datentyp wird asngegeben) oder nicht (Schlüsselwort void). Access Modifier für Variablenfelder: Der Programmierer möchte, dass nur er auf seine Variablenfelder innerhalb der Klasse zugreifen kann. Der Zugriff von Außen ist dann nur über die Getmethoden möglich. Deshalb wird in der Regel der Modifier private verwendet. Zum Vererben (s. Kapitel 4) wird der Modifier protected verwendet.

Kapitel 4: Methoden der Klassen String, Math und Umwandlung von Datentypen Methoden der Klasse String: String begruessung = Hallo! ; Die einzelnen Zeichen können über Ihren Index angesprochen werden: Index [0] [1] [2] [3] [4] [5] Zeichen H a l l o! Methode Beschreibung Beispiel int length() Gibt die Anzahl der Zeichen des begruessung.length() liefert 6 Strings zurück int indexof (String str) Gibt die Position zurück, an der begruessung.indexof( 1 ) liefert 2 die übergebende Zeichenkette str zum ersten mal auftritt String substring(int beginindex) Gibt den Teil des Strings zurück, der bei dem angegebenen Index beginnt begruessung.substring(2) liefert llo! String substring(int beginindex, int endindex) char charat(int index) boolean equals (Object o) int compareto (String s) Methoden der Klasse Math: Gibt den Teil des Strings zurück, der bei dem angegebenen beginindex beginnt und bei endindex endet Gibt den Buchstaben an der angegebenen Position zurück Liefert true, wenn o ein StringObjekt mit dem gleichen Inahlt ist Vergleicht zwei Strings zeichenweise und gibt 0 zurück, wenn sie gleich sind, eine negative Zahl, wenn dieser String s kleiner ist und eine positive Zahl, wenn er größer ist als der übergebende String. begruessung.substring(1,3) liefert all begruessung.charat(4) liefert o begruessung.equals( Hallo! ) liefert true begruessung.compareto( Hallo! ) liefert 0 begruessung.compareto( Tschüss ) liefert -12 begruessung.compareto( Adios!) liefert 7 int round (float a) Gibt die mathematisch gerundete Zahl zurück Math.round (2.022) liefert 2 Math.round (2.5) liefert 3 double sqrt (diuble a) Gibt die Quadratwurzel der Zahl a Math.sqrt (81) liefert 9. zurück (sqrt = squareroot) double pow (double a, double b Liefert den Wert der Potenz a b Math.pow(2,3) liefert 8 double random() Erzeugt eine Zufallszahl größer als 0.0 und kleiner als 1.0. Durch Multiplikation und Addition kann der Bereich entsprechend angepasst werden. Math.random()*5 + 2ß liefert ein x mit 10.0 <= x <15.0 Umwandlung zwischen String, Integer und Float: String valueof() String f2.format (float a) wobei f2 ein definiertes Dezimalformat ist Integer.parseInt (String text) Wandelt einen Integerwert um in einen String DezimalFormat steuert das Format der Ausgabe von Kommazahlen: #0.00 entspricht einer Kommazahl mit 2 Nachkommastellen Wandelt einen String in einen Integerwert um int num = 456 + 5; String.valueOf (num) liefert 461 float zahl = 2.1 + 0.4; DecimalFormat f2 = new DecimalFormat("#0.00"); f2.format(zahl) liefert 2.50 String text = 5 Integer.parseInt (text) liefert 5

Kapitel 5: Methoden der Swing-Gui-Objekte: Methoden der Klasse JLabel oder jtextfield: void settext(string text) Diese Methode setzt den anzuzeigenden Text. String gettext() Diese Methode liefert den Text des JLabels zurück. Methoden der Klasse JComboBox: int getselectedindex() void setselecteditem(object anobject) Methoden der Klasse JCheckBox: boolean setselected() void isselected(boolean wahr) Methoden der Klasse JTextArea: void append(string str) void settext(string str) Methoden der Klasse JTable: void setvalueat (String text1, int zeile, int spalte) Hier wird der Index des in der JComboBox ausgewählten Elementes zurückgegeben. Hier kann man die Auswahl direkt auf ein bestimmtes Objekt setzen. Bestimmt, ob der Haken der Checkbox gesetzt ist Gibt an, ob der Haken der Checkbox aktuell gesetzt ist. Diese Methode fügt an das Ende des bereits vorhandenen Textes den über den Parameter angegebenen Text hinzu. Diese Methode stellt den über den Parameter angegeben Text dar, mit einem Leerstring "" kann die JTextArea gelöscht werden. Setzt als Text einer Zelle den angegebenen text1. Die Zählung der Spalte und Zeile beginnt jeweils mit 0. Kapitel 6: Vererbung von Klassen: Einige Objekte einer Klasse können spezielle Eigenschaften haben, die nicht alle Objekte der Klasse benötigen. So können einige Motorräder auf der Autobahn fahren, Roller können das nicht. Für alle Zweiräder, die auf der Autobahn fahren können, wird daher die Unterklasse AutobahnFahrzeug definiert. Sie beinhaltet zwei zusätzliche Variablenfelder, die das Fahren auf der Autobahn regeln (autobahn und spritprokmautobahnzusätzlich). Die Klasse AutobahnFahrzeug erbt alle Variablenfelder und Methoden, die die Klasse Fahrzeug schon besitzt, diese müssen also nicht neu geschrieben werden: Neue Unterklasse AutobahnFahrzeug: nach extends wird die Oberklasse benannt public class AutobahnFahrzeug extends Fahrzeug{ protected boolean autobahn; protected double spritprokmautobahnzusätzlich; public AutobahnFahrzeug (double ptankgroesse, double pspritprokm, int pkmstand, double ptankinhalt, boolean pautobahn, double pspritprokmautobahnzusätzlich) { super (ptankgroesse, pspritprokm, pkmstand, ptankinhalt); this.autobahn = pautobahn; this.spritprokmautobahnzusätzlich = pspritprokmautobahnzusätzlich; Oberklasse Fahrzeug, von der die neue Unterklasse Autobahnfahrzeug erbt: public class Fahrzeug { protected double tankgröße; protected double spritprokm; protected double tankinhalt; protected int kilometerstand; public Fahrzeug(double ptankgröße, double pspritprokm, int pkmstand, double ptankinhalt) { tankgröße = ptankgröße; spritprokm = pspritprokm; kilometerstand = pkmstand; tankinhalt = ptankinhalt; Aufruf der Unterklasse in der Klasse Gui: Variablenfelder Konstruktor ptankgröße, pspritprokm usw. Übergabe der Parameterw an die Variablenfelder harley = new AutobahnFahrzeug(40,0.05,100,20,false,0.01);

In der Definition der neuen Unterklasse AutobahnFahrzeug wird gefolgt von dem Schlüsselwort extends die bereits bestehende Oberklasse angebeben, hier also die Klasse Fahrzeuge. Nach der Deklaration der Klasse werden die Variablenfelder deklariert, die die Unterklasse zusätzlich haben soll. Es folgt der Konstruktor der Unterklasse: alle Parameter, mit denen die Unterklasse aufgerufen werden soll, werden mit ihrem Datentyp angegeben. Mit dem Befehl super werden anschließend die Variablenwerte benannt, die an die Parameter der Oberklasse weitergegeben werden sollen, in der Regel verwendet man die Parameternamen selbst. Schließlich werden für die neuen Feldvariablen die Variablenwerte gesetzt, indem die entsprechenden Parameter übergeben werden. Vererbung: Alle Methoden, die in der Oberklasse implementiert sind, können direkt von der Unterklasse verwendet werden, die Unterklasse erbt dann die Methode der Oberklasse. Soll in der Unterklasse eine spezielle Version einer Methode benutzt werden, kann die Methode der Oberklasse durch eine Methodendefinition mit gleichem Namen überschrieben werden. Methode fahre der Unterklasse Autobahnfahrzeug: Methode fahre der Oberklasse Fahrzeug: public void fahre(int pstrecke) { double spritverbrauch = spritprokm * pstrecke; if (autobahn == true) { spritverbrauch = spritverbrauch + spritprokmautobahnzusätzlich * pstrecke; kilometerstand = kilometerstand + pstrecke; tankinhalt = tankinhalt - spritverbrauch; public void fahre(int pstrecke) { double spritverbrauch = spritprokm * pstrecke; kilometerstand = kilometerstand + pstrecke; tankinhalt = tankinhalt - spritverbrauch; Methodenaufruf in der übergeordneten Klasse Gui: Autobahnfahrzeug harley = new Autobahnfahrzeug ( ); Fahrzeug zweirad = harley; zweirad.fahre (strecke); Im dargestellten Methodenaufruf mit dem Autobahnfahrzeug wird die Methode der Unterklasse Autobahnfahrzeug aufgerufen, da mit der Variablen zweirad auf ein Autobahnfahrzeug zugegriffen wird. Eine Methode ist polymorph, wenn sie in verschiedenen Klassen mit der gleichen Signatur (Namen und Parameterliste) definiert wird. Es wird jeweils die Methode der Klasse verwendet, von der das Objekt ein Exemplar ist (Polymorphie). Type casting (Spezialisierung): Will man mit einem Objekt der Oberklasse eine Methode aufrufen, die es nur in der Unterklasse gibt, kann man das Objekt der Oberklasse in ein Objekt der Unterklasse umwandeln. Anschließend kann man für dieses Objekt alle Methoden der Unterklasse verwenden.: Fahrzeug zweirad; zweirad = harley; // harley ist ein Objekt der Klasse AutobahnFahrzeug zweiradautobahn = (AutobahnFahrzeug)zweirad; aus dem Objekt der Klasse Fahrzeug wird ein Objekt der Unterklasse AutobahnFahrzeug Subtyping (Verallgemeinerung): Wird eine Methode nur in einer Oberklasse definiert, kann sie auch von Objekten der Unterklasse aufgerufen werden: zweiradautobahn.getkilometerstand(); //die Methode getkilometerstand() wurde nur in der Klasse Fahrzeug definiert