150 likes | 326 Views
Programmieren mit JAVA. Teil IV. Hauptbestandteile der Sprache. Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete. Vererbung.
E N D
Programmieren mit JAVA Teil IV
Hauptbestandteile der Sprache • Token • Typen • Ausdrücke und Operatoren • Anweisungen • Klassen • Methoden • Schnittstellen • Pakete
Vererbung • Um eine neue Klasse aus einer bestehenden abzuleiten, ist im Kopf der Klasse mit Hilfe des Schlüsselworts extends ein Verweis auf die Basisklasse anzugeben • Hierdurch erbt die abgeleitete Klasse alle Eigenschaften der Basisklasse (Variable und Methoden) • Bsp.:class Cabrio extends Auto { int vdauer; Cabrio kfz1 = new Cabrio(); kfz1.name = "MX5"; kfz1.erstzulassung = 1994; kfz1.leistung = 115; kfz1.vdauer = 120; System.out.println("Alter = "+kfz1.alter());}
Zugriff auf geerbte Membervariable • Eine abgeleitete Klasse erbt jeweils die Eigenschaften der unmittelbaren Vaterklasse, die ihrerseits die Eigenschaften ihrer unmittelbaren Vaterklasse erbt • Bsp.:class ZweisitzerCabrio extends Cabrio { boolean notsitze; ZweisitzerCabrio kfz1 = new ZweisitzerCabrio(); kfz1.name = "911-T"; kfz1.erstzulassung = 1982; kfz1.leistung = 94; kfz1.vdauer = 50; kfz1.notsitze = true; System.out.println("Alter = "+kfz1.alter());}
Methodenüberlagerung • Neben den Membervariablen erbt eine abgeleitete Klasse auch die Methoden ihrer Vaterklasse • Es dürfen auch bereits von der Vaterklasse geerbte Methoden neu definiert werden. In diesem Fall spricht man von Überlagerung der Methode • Bsp.:class ZweisitzerCabrio extends Cabrio { boolean notsitze; public int alter() { return 12 * (1999 - erstzulassung); }}
Klassenvariablen • Variablen, die innerhalb einer Klasse mit dem Attribut static versehen werden, nennt man Klassenvariablen • Im Gegensatz zu den Instanzvariablen existieren Klassenvariablen unabhängig von einem Objekt • Jede Klassenvariable wird nur einmal angelegt und kann von allen Methoden der Klasse aufgerufen werden • Klassenvariablen sind daher vergleichbar mit globalen Variablen • Bsp.:Instanzenzähler in eine Klasse
Beispiel Klassenvariable public class Testauto { static private int objcnt = 0; public Testauto() { ++objcnt; } public void finalize() { --objcnt; } public static void main(String args[]) { Testauto auto1; Testauto auto2 = new Testauto(); System.out.println("Anzahl Testauto-Objekte: " + Testauto.objcnt); }}
Klassenmethoden • Methoden, die unabhängig von einer bestimmten Instanz existieren • Klassenmethoden werden ebenfalls mit Hilfe des static-Attributs deklariert • Klassenmethoden besitzen keinen this-Zeiger • Klassenmethoden werden häufig da eingesetzt, wo Funktionalitäten zur Verfügung gestellt werden, die nicht datenzentriert arbeiten oder auf primitiven Datentypen operieren • Bsp. 1: Die Klasse System ist eine Art Toolbox, die Funktionen wie Aufruf des Garbage Collectors oder Beenden des Programms zur Verfügung stellt • Bsp. 2: Methoden der Klasse Math, die eine große Anzahl an Funktionen zur Fließkomma-Arithmetik zur Verfügung stellt
Beispiel Klassenmethoden • Das folgende Listing zeigt die Verwendung der Klassenmethode sqrt der Klasse Math zur Ausgabe einer Tabelle von Quadratwurzeln public class WurzelX { public static void main(String[] args) { double x, y; for (x = 0.0; x <= 10.0; x = x + 1.0) { y = Math.sqrt(x); System.out.println("sqrt("+x+") = "+y); } } }
Interfaces • Ein Interface ist eine besondere Form einer Klasse, die ausschließlich abstrakte Methoden und Konstanten enthält • Anstelle von class wird zur Definition eines Interfaces das Schlüsselwort interface verwendet • Was bei der Vererbung von Klassen als Ableitung bezeichnet wird, nennt man bei Interfaces Implementierung • Durch das Implementieren eines Interfaces verpflichtet sich die Klasse, alle Methoden, die im Interface definiert sind, zu implementieren • Die Implementierung eines Interfaces wird durch das Schlüsselwort implements bei der Klassendefinition angezeigt
public interface Fortbewegungsmittel {public int kapazitaet();public double kilometerPreis(); } public class Auto implements Fortbewegungsmitte {public String name;public int erstzulassung;public int leistung;private int anzahlSitze;private double spritVerbrauch;private double spritPreis;public double kapazitaet() {return anzahlSitze;}public double kilometerPreis() { return spritVerbrauch*spritPreis/100;} }
Pakete 1 java.applet Applets java.awt Abstract Windowing Toolkit java.awt.color Unterstützung für unterschiedliche Farbsysteme java.awt.datatransfer AWT Clipboard-Funktionen java.awt.dnd Drag & Drop java.awt.font Erweiterte Unterstützung für Schriftarten java.awt.geom 2D-Bildverarbeitung java.awt.im Eingabe von fernöstlichen Schriftzeichen java.awt.image AWT-Bildverarbeitung java.awt.image.renderable Darstellungsunabhängige Bildverarbeitung java.awt.print Druckausgabe java.beans Java Beans java.beans.beancontext Java Beans-Unterstützung java.io Bildschirm- und Datei-I/O java.lang Elementare Sprachunterstützung java.lang.reflect Reflection-API java.lang.ref Referenz-Objekte
Pakete 2 java.math Fließkomma-Arithmetik java.net Netzwerkunterstützung java.rmi Remote Method Invocation (RMI) java.rmi.dgc RMI Distributed Garbage Collection java.rmi.registry RMI Service Registry java.rmi.server RMI-Support java.security Security-Dienste java.security.acl Access Control Lists java.security.cert Zertifikate java.security.interfaces DSA-Interfaces java.security.spec Sicherheitsspezifikationen java.sql Datenbankzugriff (JDBC) java.text Internationalisierung java.util Diverse Utilities und Datenstrukturen java.util.jar Zugriff auf JAR-Files java.util.mime Multipurpose Internet Mail Extensions (MIME) java.util.zip Zugriff auf ZIP-Files