Java Standard: Schlüsselwörter

Aus Wikibooks


Reservierte Begriffe[Bearbeiten]

Die folgenden Schlüsselwörter sind in Java reserviert und dürfen nicht für Variablenbezeichner verwendet werden:

abstract

assert

boolean

break

byte

case

catch

char

class

const

continue

default

do

double

else

enum

extends

final

finally

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

short

static

strictfp

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

Die Schlüsselworte const und goto werden nicht verwendet.

Komplexe Typen[Bearbeiten]

Java kennt auch die Definition eigener Typen. Dabei gibt es vier verschiedene Arten eigener Typen: Klassen, Schnittstellen, Aufzählungstypen und Annotationen.

Klassen: class[Bearbeiten]

Eine Klasse wird mit dem Schlüsselwort class definiert. Klassen, die an hierarchisch oberster Stelle in einem Quelltext stehen, heißen nicht-geschachtelte Top-Level-Klassen. Klassen, die in einer anderen Klasse definiert sind, heißen geschachtelte Klassen.

Eine geschachtelte Klasse, die als static deklariert wurde, heißt geschachtelte Top-Level-Klasse. Eine geschachtelte Klasse, die nicht als static deklariert wurde, heißt innere Klasse. Eine Klasse, die in einer Methode definiert wurde, heißt lokale Klasse. Darüberhinaus besteht auch die Möglichkeit, für die einmalige Verwendung Klassen ohne Namen und ohne das Schlüsselwort class zu deklarieren. Solche Klassen heißen anonyme Klassen.

Nicht-geschachtelte Top-Level-Klassen sind der Regel-Fall. Wenn es sich bei einer Klasse um eine nicht-geschachtelte Top-Level-Klasse handelt, darf die Klasse nur die Zugreifbarkeit public oder package default besitzen und außerdem nicht als static deklariert werden. Eine nicht-geschachtelte Top-Level-Klasse, die als public deklariert ist, muss zudem genauso heißen wie die Quelltext-Datei, inklusive Berücksichtigung der Groß- und Kleinschreibung. Das gilt auch unter Betriebssystemen, die eigentlich nicht zwischen Groß- und Kleinschreibung unterscheiden, wie z.B. Microsoft Windows.

Geschachtelte Klassen dürfen jede Zugreifbarkeit tragen.

Sämtliche Klassen dürfen als entweder abstract, final oder keines von beidem, nicht jedoch beides zugleich deklariert werden. Eine als abstract deklarierte Klasse heißt abstrakte Klasse, eine als final deklarierte Klasse heißt finale Klasse.

Es ist nicht möglich, abstrakte Klassen zu instanzieren. Stattdessen muss man sich eine geeignete Subklasse suchen oder selbst schreiben.

Es ist nicht möglich, eine Subklasse einer finalen Klasse zu bilden.

Schnittstellen (Interfaces): interface[Bearbeiten]

Eine Schnittstelle ist eine vollständig abstrakte Klasse. Da eine vollständig abstrakte Klasse keine Schwierigkeiten für die Implementierung in Bezug auf Mehrfachvererbung mit sich bringen kann, gestattet Java die Mehrfachvererbung nur in Bezug auf Interfaces. Um dies konsequent zu gewährleisten, unterscheidet Java streng zwischen Klassen und Interfaces.

Ein Interface kann keine Konstruktoren und somit auch keine Instanzinitialisierer enthalten.

Methoden in Interfaces sind automatisch public und abstract. Sie dürfen keine andere Zugreifbarkeit als public haben. Sie dürfen nicht final, static oder native sein.

Variablen in Interfaces sind automatisch public, static und final. Sie dürfen keine andere Zugreifbarkeit als public haben.

Ansonsten gilt für Interfaces das gleiche wie für Klassen. Interfaces können also auch Typen, z.B. innere Klassen enthalten.

Annotationen (Annotations): @interface[Bearbeiten]

Eine Annotation ist eine spezielle Schnittstelle für die Hinterlegung von Informationen über Java-Programme. Annotationen sind mit der Version 5.0 in Java eingeführt worden und werden hauptsächlich zur Ergänzung der Möglichkeiten von Reflection und zur Code-Generierung verwendet.

Für Annotationen gelten vergleichbar strenge Regeln wie für Interfaces.

Aufzählungstypen (Enumerations): enum[Bearbeiten]

null[Bearbeiten]

null ist kein Schlüsselwort im eigentlichen Sinn sondern ein Literal. Es dient dir dazu den Wert einer komplexen Datentyps zu setzen oder zu prüfen. Es handelt sich insoweit jedoch um einen Bezeichner, welchen du nicht vergeben kannst.

void[Bearbeiten]

void wird verwendet um bei der Signatur einer Methode den Rückgabetyp leer zu deklarieren.

public void ichHabeKeineRueckgabe () {}

package[Bearbeiten]

package deklariert die Paketzugehörigkeit eines komplexen Datentyps. Die Namensgebung eines Pakets sollte eindeutig sein und orientiert sich meist an der URI/URL des Eigentümers bzw. Erstellers. Bei einer Paket angabe handelt es sich grundsätzlich um die erste Anweisung im Java-Quelltext des Pakets.

package org.wikibooks.de;

import[Bearbeiten]

import importiert komplexe Typen, so dass sie ohne voll qualifizierten Namen verwendet werden können. Es können durch Nutzung des Wildcard * auch alle komplexen Typen eines Pakets importiert werden.

import javax.swing.JFrame;
import java.awt.*;
public class ImportBeispiel {
  public ImportBeispiel () {
    JFrame swingFenster = new JFrame (); // Verwendung mit einfachen import
    javax.swing.JMenuBar swingMenueZeile = new javax.swing.JMenuBar (); // Verwendung ohne import 
// Verwendung mit Wildcard import Frame awtFenster = new Frame (); MenuBar awtMenueZeile = new MenuBar (); } }

Seit Java 5.0 können auch statische Member von Klassen importiert werden.