Wie werden Klassenvariablen auch genannt, und warum
Statische Attribute – weil sie nicht an ein Objekt gebunden sind, sondern bereits ab der Existenz einer Klasse verfügbar sind
Für wen gelten statische Attribute, und wie viele unterschiedliche Werte kann es geben?
Sie gelten für alle Instanzen einer Klasse; ihr Wert ist für alle Instanzen derselbe (es gibt also nur einen einzigen Wert für die gesamte Klasse).
Mit welchem Schlüsselwort werden Klassenvariablen (statische Attribute) deklariert?
static
Wie greift man auf ein statisches Attribut zu, und was muss dafür NICHT vorher geschehen?
Über den Klassennamen; es muss vorher kein Objekt der Klasse erzeugt werden.
Was passiert, wenn der Wert eines statischen Attributs verändert wird?
Der Wert ändert sich für alle Objekte der Klasse und der Unterklassen gleichzeitig.
Können auch Methoden als static deklariert werden, und wie werden sie aufgerufen?
Ja; sie sind ebenfalls unabhängig von der Existenz eines konkreten Objekts und werden über die Klasse aufgerufen
Worauf darf im Methodenrumpf einer statischen Methode NICHT zugegriffen werden, und warum?
Nicht auf Instanzmethoden oder Instanzvariablen – weil statische Methoden auch ohne die Existenz eines Objekts der Klasse aufgerufen werden können, es zum Zeitpunkt des Aufrufs also gar kein konkretes Objekt geben muss.
Wofür werden statische Attribute in der Java-Klassenbibliothek häufig verwendet, mit Beispiel?
Für die Definition von Konstanten, z. B. die Kreiszahl pi und die Eulersche Zahl e als statische Attribute der Klasse Math.
pi
e
Math
Wovon hängt das Ergebnis typischer statischer Methoden ab, mit Beispiel?
Einzig und allein von den Werten der übergebenen Parameter, nicht vom internen Zustand eines Objekts – z. B. sin, cos, log der Klasse Math.
sin
cos
log
Muss vor der Verwendung von Math.sin(...) eine Instanz von Math erzeugt werden?
Math.sin(...)
Nein, da es sich um eine statische Methode handelt.
Warum war es für Herrn Koch ungünstig, beschreibungsTrennzeichen als normales (nicht-statisches) Attribut der Klasse "Artikel" zu deklarieren?
beschreibungsTrennzeichen
Ein normales Attribut ist an ein konkretes Objekt gebunden – um darauf zuzugreifen, müsste zuerst ein Artikel-Objekt erzeugt werden. Da das Trennzeichen aber für alle Artikel gleichermaßen gelten soll und unabhängig von einem konkreten Objekt sinnvoll ist, ist ein statisches Attribut die passendere Lösung: Zugriff ist direkt über die Klasse möglich, ohne ein Objekt zu erzeugen, und der Wert ist garantiert für alle Instanzen identisch.
Warum dürfen statische Methoden nicht auf Instanzvariablen oder -methoden zugreifen?
Eine statische Methode kann aufgerufen werden, ohne dass überhaupt ein Objekt der Klasse existiert. Instanzvariablen und -methoden gehören aber immer zu einem konkreten Objekt – ohne ein solches Objekt gäbe es schlicht keinen Wert bzw. keine Instanz, auf die zugegriffen werden könnte. Der Zugriff wäre technisch nicht definierbar
Warum eignen sich statische Methoden besonders gut für Funktionen wie sin, cos oder eine Artikelnummer-Prüfung, die keinen Objektzustand benötigen?
Solche Funktionen berechnen ihr Ergebnis ausschließlich aus den übergebenen Parametern, ohne auf gespeicherte, objektspezifische Daten angewiesen zu sein. Da kein Objektzustand gebraucht wird, ist die Erzeugung eines Objekts nur zusätzlicher, unnötiger Aufwand – die statische Methode erlaubt den direkten Aufruf über die Klasse, was einfacher und effizienter ist.
Erkläre anhand von Herrn Kochs zwei Anwendungsfällen (Trennzeichen und Artikelnummer-Prüfung), wie statische Attribute und statische Methoden jeweils eingesetzt werden.
Für das einheitliche Formatierungszeichen der Beschreibungstexte deklariert Herr Koch das statische Attribut beschreibungsTrennzeichen in der Klasse "Artikel" – er kann direkt über Artikel.beschreibungsTrennzeichendarauf zugreifen, ohne ein Artikel-Objekt zu erzeugen, und eine Änderung wirkt sich sofort auf alle Artikel und deren Unterklassen aus. Für die Prüfung, ob eine gegebene Artikelnummer gültig ist, implementiert er eine statische Methode – diese Prüfung kann bereits erfolgen, bevor überhaupt ein konkretes Artikel-Objekt existiert, da sie nur von der übergebenen Artikelnummer (Parameter) abhängt und keinen Objektzustand benötigt.
Artikel.beschreibungsTrennzeichen
Erklären Sie statische Attribute und statische Methoden in Java, ihre Deklaration, ihren Zugriff und typische Einsatzzwecke.
Statische Attribute (auch Klassenvariablen genannt) werden mit dem Schlüsselwort static deklariert und gelten für alle Instanzen einer Klasse gleichermaßen – es gibt nur einen gemeinsamen Wert, der sich bei Änderung für alle Objekte der Klasse und ihrer Unterklassen ändert. Der Zugriff erfolgt über den Klassennamen, ohne dass vorher ein Objekt erzeugt werden muss. Analog können auch Methoden als static deklariert werden; sie sind ebenfalls unabhängig von einem konkreten Objekt aufrufbar, dürfen im Methodenrumpf aber nicht auf Instanzvariablen oder -methoden zugreifen, da zum Aufrufzeitpunkt möglicherweise gar kein Objekt existiert. In der Praxis werden statische Attribute häufig für Konstanten genutzt (z. B. pi und e in der Klasse Math), statische Methoden für Funktionen, deren Ergebnis nur von den übergebenen Parametern abhängt (z. B. sin, cos, log).
Last changed16 days ago