Programmieren mit JAVA
description
Transcript of Programmieren mit JAVA
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 1java.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 2java.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