Vererbung und Array Fragen Vererbung z z z z Die Klassen in Java sind in einer Hierarchie geordnet. Vaterklasse (Oberklasse, Superklasse) und Kinderklasse (Unterklasse, Subklasse) Alle Sichtbaren Elemente der Superklasse werden an die Subklasse weitergegeben (vererbt) In Java kann eine Klasse nur eine Oberklasse haben (Ausnahme Interface) Vererbung Beispiel: Superklasse Subklassen Vererbungshierarchie Erweiterung des Beispiels: Vererbung in UML Vererbung in Java z z z z Beispiel Tier Eine Klasse Tier mit einer Instanzvariablen Alter vom Typ int. Eine Klasse Vogel extends Tier Damit besitzt auch eine Vogel ein Alter Siehe Java Klassen Vererbung Tiere z Beispiel mit AWT Sichtbarkeit z z z z Public: Protected: Privat: Default (ohne Angabe eines Schlüsselwortes) Abstrakte Klassen z z z z Beispiel: Klasse Kreis von letzter Stunde Wir wollen jetzt mehrere Geometrische Objekte erzeugen (Rechteck, Ellipse, Dreieck, usw.) Jetzt wäre es doch gut wenn wir eine Superklasse Figur hätten die die beiden Funktionen Umfang und Fläche beinhaltet. Jedoch repräsentiert unsere Klasse Figur ja keine tatsächlich existierende Form. (Sie ist abstrakt) Abstrakt z z Eine solche Klasse wird mit dem Schlüsselwort abstract beschrieben Beispiel: z public class abstract Figur{ public abstract double flaeche();// Abstrakte Methode public abstract double umfang ();// Abstrakte Methode } Abstrakte Klassen public class Quadrat extends Figur{ protected int l; public Quadrat(int l){ this.l=l; } public double umfang(){ //Methode überschreiben return 4*l; } public double flaeche(){ //Methode überschreiben return l*l; } Unterschied Überschreiben und Überlagern ??? Ist das klar? Überschreiben vs. Überlagern Beispiel: public class foo{ public int l=-1; public void ausgabe(){ System.out.println(„Foo mit Wert l= “+this.l); } } Überschreiben vs. Überlagern public class bar extends foo{ public int l=2; public void ausgabe(){ System.out.println(„Bar mit l= „+l); } } Siehe Foobar Beispiel Exkurs: Package z z z Packages sind eine benannte Sammlung von Klassen (und deren Subklassen) Sie dienen dazu, verwandte Klassen zusammenzufassen und für die enthaltenen Klassen einen Namensraum bereitzustellen Um anzugeben, zu welchen Package eine Klasse gehört, muss in der ersten Zeile package Name stehen. Exkurs: Package z Möchte man Klassen aus einem anderen Package benutzen: import Packagename z z z.B. import java.awt.* Eindeutigkeit von Packagenamen: z z Internetdomainname umgedreht z.B. de.thiel-it.tools Exkurs: Fenster schließen addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { e.getWindow().dispose(); //exit() } }); } Arrays z z z z z In Java Objekte int[] a=new int[4]; int[] a={17,15,7,3,5,1,11,19,2,18,4,16,10,12}; a.length; gibt die Länge des Feldes als Int zurück Inhalt an der Stelle x im Feld a[x]; Arrays /** *@author Sebastian Thiel * */ public class Hello{ public static void main(String[] Args){ int [] b= new int[4]; b[3]=2; System.out.println(b[3]); } } Übungsaufgaben z z Siehe www.uni-koblenz.de/~sebath Aufgaben Lösungen zu den Aufgabe nach der Veranstaltung auch auf der Seite