Lektion4

Werbung
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
java.awt
java.awt.color
java.awt.datatransfer
java.awt.dnd
java.awt.font
java.awt.geom
java.awt.im
java.awt.image
java.awt.image.renderable
java.awt.print
java.beans
java.beans.beancontext
java.io
java.lang
java.lang.reflect
java.lang.ref
Applets
Abstract Windowing Toolkit
Unterstützung für unterschiedliche Farbsysteme
AWT Clipboard-Funktionen
Drag & Drop
Erweiterte Unterstützung für Schriftarten
2D-Bildverarbeitung
Eingabe von fernöstlichen Schriftzeichen
AWT-Bildverarbeitung
Darstellungsunabhängige Bildverarbeitung
Druckausgabe
Java Beans
Java Beans-Unterstützung
Bildschirm- und Datei-I/O
Elementare Sprachunterstützung
Reflection-API
Referenz-Objekte
Pakete 2
java.math
java.net
java.rmi
java.rmi.dgc
java.rmi.registry
java.rmi.server
java.security
java.security.acl
java.security.cert
java.security.interfaces
java.security.spec
java.sql
java.text
java.util
java.util.jar
java.util.mime
java.util.zip
Fließkomma-Arithmetik
Netzwerkunterstützung
Remote Method Invocation (RMI)
RMI Distributed Garbage Collection
RMI Service Registry
RMI-Support
Security-Dienste
Access Control Lists
Zertifikate
DSA-Interfaces
Sicherheitsspezifikationen
Datenbankzugriff (JDBC)
Internationalisierung
Diverse Utilities und Datenstrukturen
Zugriff auf JAR-Files
Multipurpose Internet Mail Extensions (MIME)
Zugriff auf ZIP-Files
Herunterladen