Untitled

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Warum ist das Datenfeld dispo als private static double dispo = 5000.0; deklariert?

  • Um zu verhindern, dass andere Klassen direkt auf dieses Datenfeld zugreifen und es verändern können. (correct)
  • Um die Lesbarkeit des Codes zu verbessern, da `private`-Variablen leichter zu identifizieren sind.
  • Um Speicherplatz zu sparen, da `static`-Variablen nur einmal im Speicher vorhanden sind.
  • Um sicherzustellen, dass der Wert von `dispo` nicht verändert werden kann, nachdem er initialisiert wurde.

Welche Aussage über System.out.println("Hallo Welt"); ist korrekt?

  • `System` ist ein Objekt, `out` ist eine Methode dieses Objekts und `println` ist ein Parameter.
  • `System` ist eine Methode, `out` ist ein Objekt und `println` ist eine Variable.
  • `System` ist ein Package, `out` ist eine Klasse und `println` ist eine statische Methode.
  • `System` ist eine Klasse, `out` ist ein statisches Datenfeld vom Typ `PrintStream` und `println` ist eine Objektmethode der Klasse `PrintStream`. (correct)

Was ist der Hauptvorteil der Verwendung von jshell im Vergleich zur Erstellung einer vollständigen Java-Klasse mit einer main-Methode?

  • `jshell` unterstützt eine größere Anzahl von Java-Bibliotheken als traditionelle Java-Klassen.
  • `jshell` erfordert weniger Speicherplatz während der Ausführung im Vergleich zu Java-Klassen.
  • `jshell` ermöglicht die Erstellung von ausführbaren Dateien, die kleiner sind als die von Java-Klassen.
  • `jshell` bietet eine schnellere und einfachere Möglichkeit, Java-Programme zu erstellen und auszuführen, ohne den Overhead einer vollständigen Klassendefinition. (correct)

Welche der folgenden Aussagen beschreibt korrekt die notwendigen Schritte, um eine einfache Java-Anwendung ohne jshell auszuführen?

<p>Erstellen einer Datei mit dem Klassennamen und der Dateiendung <code>.java</code>, die eine <code>public static void main(String[] args)</code> Methode enthält, kompilieren und ausführen. (D)</p> Signup and view all the answers

Was ist der Zweck des String[] args Parameters in der main-Methode?

<p>Er enthält die Kommandozeilenargumente, die beim Aufruf des Programms übergeben werden. (C)</p> Signup and view all the answers

Welche Aussage beschreibt am besten die Verwendung von this in Bezug auf Klassenvariablen?

<p><code>this</code> ermöglicht den Zugriff auf Datenfelder (Instanzvariablen) des aktuellen Objekts, insbesondere bei Namenskonflikten. (C)</p> Signup and view all the answers

In welchem Kontext ist die Verwendung von this besonders nützlich?

<p>Wenn ein Methodenparameter denselben Namen wie eine Instanzvariable hat. (D)</p> Signup and view all the answers

Was ist der Zweck der Rückgabe von this durch eine Methode?

<p>Um eine Selbstreferenz zu ermöglichen, was das Verketten von Methodenaufrufen auf demselben Objekt erlaubt. (B)</p> Signup and view all the answers

Betrachten Sie eine Klasse Person mit einer Instanzvariablen name. Wie würden Sie innerhalb einer Methode dieser Klasse, die einen Parameter name hat, auf die Instanzvariable zugreifen?

<p><code>this.name</code> (A)</p> Signup and view all the answers

Wie greift man von außerhalb einer Klasse auf ein static definiertes Datenfeld zu?

<p>Direkt über den Namen der Klasse, gefolgt von einem Punkt und dem Namen des Datenfelds. (B)</p> Signup and view all the answers

Welche der folgenden Aussagen über this in Java ist FALSCH?

<p><code>this</code> kann in statischen Methoden verwendet werden. (A)</p> Signup and view all the answers

Gegeben sei eine Methode verschiebe(int x, int y) in einer Klasse Punkt. Wie kann this verwendet werden, um nach der Verschiebung das Objekt selbst zurückzugeben, sodass verkettete Aufrufe möglich sind?

<p><code>return this;</code> (B)</p> Signup and view all the answers

Welche Aussage trifft im Allgemeinen auf static final Variablen zu?

<p>Sie sind Klassenvariablen, deren Wert nach der Initialisierung nicht mehr verändert werden kann und oft als Konstanten verwendet werden. (C)</p> Signup and view all the answers

Was ist das Hauptmerkmal einer static Methode in Bezug auf den Zugriff auf Instanzvariablen?

<p>Sie hat keinen direkten Zugriff auf Instanzvariablen der Klasse. (D)</p> Signup and view all the answers

Was passiert, wenn this in einem Kontext verwendet wird, in dem es keine gültige Objektreferenz gibt (z.B. in einer statischen Methode)?

<p>Es tritt ein Compilerfehler auf. (A)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt korrekt den Unterschied zwischen Klassenmethoden und Objektmethoden?

<p>Klassenmethoden können nur auf <code>static</code> deklarierte Felder zugreifen, während Objektmethoden Zugriff auf alle Felder der Klasse haben. (A)</p> Signup and view all the answers

In einem Konstruktor einer Klasse Fahrzeug werden die Parameter farbe und modell verwendet, um die entsprechenden Instanzvariablen zu initialisieren. Wie stellen Sie sicher, dass die Instanzvariablen und nicht die Parameter überschrieben werden, wenn sie den gleichen Namen haben?

<p>Verwenden des Schlüsselworts <code>this</code> um auf die Instanzvariablen zuzugreifen. (C)</p> Signup and view all the answers

Warum könnte man ein static-Datenfeld zusätzlich als private deklarieren?

<p>Um den Zugriff auf das Datenfeld von außerhalb der Klasse zu beschränken, während es innerhalb der Klasse weiterhin genutzt werden kann. (D)</p> Signup and view all the answers

In welchem Kontext ist das Schlüsselwort this in Bezug auf static Methoden relevant?

<p><code>this</code> ist in statischen Methoden nicht verfügbar, da diese nicht an eine bestimmte Objektinstanz gebunden sind. (D)</p> Signup and view all the answers

Welchen Vorteil bietet die Verwendung von statischen Methoden wie Math.random() im Vergleich zu nicht-statischen Methoden?

<p>Statische Methoden können aufgerufen werden, ohne eine Instanz der Klasse erstellen zu müssen. (C)</p> Signup and view all the answers

Wie beeinflusst die Verwendung von static bei Datenfeldern das Verhalten von Objekten der Klasse?

<p>Alle Objekte der Klasse teilen sich dieselbe Instanz des statischen Datenfelds. (D)</p> Signup and view all the answers

Welche Aussage trifft bezüglich des Aufrufs eines anderen Konstruktors mit this() innerhalb eines Konstruktors zu?

<p>Der <code>this()</code>-Aufruf muss die erste Anweisung im Konstruktor sein. (A)</p> Signup and view all the answers

Betrachten Sie die Klasse Konto. Wann wäre der Einsatz von this(kontoNr, 0, kundenNr) anstelle einer direkten Zuweisung von kontoStand = 0; besonders sinnvoll?

<p>Wenn die Initialisierung von <code>kontoStand</code> komplexere Logik beinhaltet, die bereits im anderen Konstruktor definiert ist. (B)</p> Signup and view all the answers

In welchem Kontext ist die Verwendung des Schlüsselworts static bei der Deklaration von Datenfeldern innerhalb einer Klasse am sinnvollsten?

<p>Wenn der Wert des Feldes für alle Objekte der Klasse gleich und unabhängig von den einzelnen Objekten sein soll. (A)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt korrekt den Unterschied zwischen einem statischen und einem nicht-statischen Datenfeld einer Klasse?

<p>Statische Felder gehören zur Klasse selbst und werden von allen Objekten geteilt, während nicht-statische Felder zu jedem einzelnen Objekt der Klasse gehören. (B)</p> Signup and view all the answers

Angenommen, Sie haben eine Klasse Mitarbeiter mit einem statischen Feld anzahlMitarbeiter. Wie würden Sie den Wert von anzahlMitarbeiter erhöhen, wenn ein neues Mitarbeiter-Objekt erstellt wird?

<p>Innerhalb des Konstruktors der Klasse <code>Mitarbeiter</code>. (D)</p> Signup and view all the answers

Warum ist es wichtig, dass der this(...)-Konstruktoraufruf die erste Anweisung in einem Konstruktor ist?

<p>Um sicherzustellen, dass alle Felder der Klasse initialisiert sind, bevor andere Anweisungen ausgeführt werden. (D)</p> Signup and view all the answers

Welchen Vorteil bietet die Verwendung von this() zum Aufrufen eines anderen Konstruktors im Vergleich zur direkten Wiederholung des Codes?

<p>Es reduziert die Code-Duplizierung, erleichtert die Wartung und verbessert die Lesbarkeit. (A)</p> Signup and view all the answers

Wie greift man auf ein statisches Datenfeld einer Klasse zu, ohne eine Instanz der Klasse zu erstellen?

<p>Ãœber den Klassennamen, gefolgt von einem Punkt und dem Namen des Feldes (z.B. <code>Klasse.statischesFeld</code>). (C)</p> Signup and view all the answers

Welche Aussage beschreibt am besten, wie JShell Klassen behandelt?

<p>Jede Klasse wird so behandelt, als ob sie in einer separaten <code>.java</code>-Datei definiert wäre. (B)</p> Signup and view all the answers

Betrachten Sie die gegebene Student-Klasse. Welche der folgenden Aussagen über die Initialisierung der Instanzvariablen ist korrekt?

<p><code>String</code>-Variablen werden standardmäßig mit <code>null</code> initialisiert, während <code>int</code>-Variablen den Wert 0 erhalten, falls keine explizite Initialisierung erfolgt. (B)</p> Signup and view all the answers

Gegeben sei die Klasse Student. Was passiert, wenn man versucht, von außerhalb der Klasse direkt auf die Variable matrnr zuzugreifen, wenn diese als private int matrnr; deklariert wäre?

<p>Es tritt ein Compiler-Fehler auf, da <code>private</code> Variablen nur innerhalb der Klasse zugänglich sind. (C)</p> Signup and view all the answers

In der Temp-Klasse wird ein Student-Objekt s1 erzeugt und dessen fachsemester auf 10 gesetzt. Welche der folgenden Aussagen trifft zu, nachdem diese Operation ausgeführt wurde?

<p>Nur das <code>Student</code>-Objekt <code>s1</code> hat nun den Wert 10 für <code>fachsemester</code>. (B)</p> Signup and view all the answers

Nehmen wir an, die Student-Klasse hätte eine Methode public String getFullName() { return vorname + ' ' + nachname; }. Was wäre die korrekte Art, diese Methode für das in Temp erzeugte Objekt s1 aufzurufen?

<p><code>s1.getFullName();</code> (C)</p> Signup and view all the answers

Welche der folgenden Änderungen an der Student-Klasse würde dazu führen, dass der Code in der Temp-Klasse nicht mehr kompiliert?

<p>Ändern des Zugriffsmodifikators von <code>vorname</code> zu <code>private</code> und das Fehlen einer Getter-Methode in <code>Student</code>. (A)</p> Signup and view all the answers

Angenommen, die Klasse Student implementiert die Methode public String toString(). Was würde der Aufruf System.out.println(s1); in der Temp-Klasse bewirken, wobei s1 ein Objekt der Student-Klasse ist?

<p>Es würde die von der <code>Student</code>-Klasse überschriebene <code>toString()</code> Methode ausgeben. (B)</p> Signup and view all the answers

Was wäre die Folge, wenn in der Student-Klasse der Konstruktor Student(String v, String n, int mnr, int f) nicht definiert wäre?

<p>Es würde ein Standardkonstruktor ohne Parameter automatisch generiert. (B)</p> Signup and view all the answers

Welche Aussage beschreibt am besten die Sichtbarkeit der main-Methode in Java?

<p>Die <code>main</code>-Methode ist öffentlich zugänglich, sodass sie von überall aufgerufen werden kann. (D)</p> Signup and view all the answers

Warum ist die main-Methode in Java als static deklariert?

<p>Damit die Methode ausgeführt werden kann, ohne eine Instanz der Klasse zu erstellen. (C)</p> Signup and view all the answers

Welchen Rückgabetyp hat die main-Methode in Java?

<p><code>void</code> (C)</p> Signup and view all the answers

Welchen Zweck hat der Parameter String[] args in der main-Methode?

<p>Er ermöglicht die Übergabe von Kommandozeilenargumenten an das Programm. (A)</p> Signup and view all the answers

Was passiert, wenn ein Java-Programm mit dem Aufruf java MeinProgramm eins zwei drei gestartet wird?

<p>Das Programm speichert die Strings 'eins', 'zwei' und 'drei' im <code>args</code>-Array der <code>main</code>-Methode. (C)</p> Signup and view all the answers

Wie kann man in Java einen String aus dem args-Array in eine ganze Zahl umwandeln?

<p>Mit der Methode <code>Integer.parseInt(String s)</code>. (C)</p> Signup and view all the answers

Welche Art von Fehler tritt auf, wenn die parseInt-Methode einen String erhält, der keine gültige Zahl darstellt?

<p>Eine <code>NumberFormatException</code>. (B)</p> Signup and view all the answers

Ein Java-Programm soll zwei ganze Zahlen als Kommandozeilenparameter entgegennehmen und deren Summe ausgeben. Was ist die wahrscheinlichste Ursache für einen Fehler, wenn das Programm unerwartet abbricht?

<p>Einer oder beide der Kommandozeilenparameter sind keine gültigen Integer-Zahlen. (D)</p> Signup and view all the answers

Flashcards

Was ist 'this'?

Das Schlüsselwort, das eine Referenz auf das aktuelle Objekt liefert.

Wie wird 'this' verwendet?

Innerhalb einer Klasse kann 'this' wie eine Variable vom Typ der Klasse verwendet werden.

Wozu dient 'this'?

Zur Auflösung von Namenskonflikten zwischen Klassenattributen und Parametern.

Was bewirkt 'this.variable'?

Greift auf das Datenfeld des Objekts zu, im Gegensatz zur gleichnamigen Parametervariable.

Signup and view all the flashcards

Selbstreferenz?

Ein Objekt kann eine Referenz auf sich selbst zurückgeben.

Signup and view all the flashcards

'this' als Ergebnis?

Durch das Schlüsselwort 'this' bekommt man die Referenz des Objekts, in dem man sich befindet.

Signup and view all the flashcards

Was macht 'return this;'?

Die Methode 'einzahlen' gibt eine Referenz auf das Konto-Objekt zurück, nachdem der Betrag hinzugefügt wurde.

Signup and view all the flashcards

Was liefert 'this'?

Die Referenz auf das Objekt selbst.

Signup and view all the flashcards

Was ist this(...) in Konstruktoren?

Ermöglicht einem Konstruktor, einen anderen Konstruktor derselben Klasse aufzurufen.

Signup and view all the flashcards

Bedingung für this(...)?

this(...) muss die erste Anweisung im Konstruktor sein.

Signup and view all the flashcards

Was bedeutet static?

Datenfelder oder Methoden, die zur Klasse selbst gehören, nicht zu einer Instanz.

Signup and view all the flashcards

Wann statische Datenfelder verwenden?

Wenn alle Objekte einer Klasse den gleichen Wert für ein Feld haben sollen.

Signup and view all the flashcards

Beispiel für this(...)

Konto(String kontoNr, int kundenNr) { this(kontoNr, 0, kundenNr); }

Signup and view all the flashcards

Wo kann static stehen?

Vor einer Methode, einem Datenfeld oder einem Initialisierungsblock.

Signup and view all the flashcards

Wem gehören statische Komponenten?

Sie gehören nicht zu einem Objekt der Klasse, sondern zur Klasse selbst.

Signup and view all the flashcards

Warum statische Datenfelder?

Um Daten zu speichern, die für alle Objekte der Klasse gleich sind (z.B. ein Dispo).

Signup and view all the flashcards

Was ist ein statisches Feld?

Ein Datenfeld, das zu der Klasse selbst gehört und nicht zu einer Instanz der Klasse.

Signup and view all the flashcards

Wie definiert man statische Felder?

Mit dem Schlüsselwort static.

Signup and view all the flashcards

Wofür werden statische Felder oft verwendet?

Oft Konstanten, die unveränderlich sind.

Signup and view all the flashcards

Wie greift man von außerhalb der Klasse auf statische Felder zu?

Durch den Klassennamen, z.B. Konto.dispo.

Signup and view all the flashcards

Was sind statische Methoden?

Klassenmethoden, die unabhängig von Objekten sind.

Signup and view all the flashcards

Wie ruft man eine statische Methode auf?

Ãœber den Klassennamen, z.B. Math.random().

Signup and view all the flashcards

Worauf haben Objektmethoden Zugriff?

Haben Zugriff auf alle Datenfelder und Methoden des Objekts und der Klasse.

Signup and view all the flashcards

Warum static mit private kombinieren?

Um den Gebrauch außerhalb der Klasse zu verbieten, während man es innerhalb nutzen möchte.

Signup and view all the flashcards

Private Static Variable

Eine private statische Variable, auf die nur statische Methoden der Klasse zugreifen können, um unkontrollierte Änderungen zu verhindern.

Signup and view all the flashcards

System.out.println()

System.out.println() ist eine Methode zum Ausgeben von Text. System ist eine Klasse, out ein statisches Datenfeld vom Typ PrintStream, der die Methoden print und println besitzt.

Signup and view all the flashcards

main-Methode

Eine spezielle Methode, die den Startpunkt eines Java-Programms definiert. Sie wird benötigt, wenn man Programme ohne jshell ausführen will.

Signup and view all the flashcards

main-Methoden Signatur

Die main-Methode muss als public static void main(String[] args) deklariert werden.

Signup and view all the flashcards

Java-Dateiendung

Java-Klassendateien werden mit der Endung .java gespeichert. Der Dateiname muss mit dem Klassennamen übereinstimmen (z.B. Hallo.java für die Klasse Hallo).

Signup and view all the flashcards

Was ist eine Klasse?

Eine Vorlage zur Erstellung von Objekten. Definiert Attribute (Daten) und Methoden (Verhalten).

Signup and view all the flashcards

Was ist ein Objekt?

Eine Instanz einer Klasse. Ein konkretes Exemplar mit eigenen Attributwerten.

Signup and view all the flashcards

Was sind Attribute?

Datenfelder innerhalb einer Klasse, die den Zustand eines Objekts beschreiben.

Signup and view all the flashcards

Was sind Methoden?

Funktionen innerhalb einer Klasse, die das Verhalten eines Objekts definieren.

Signup and view all the flashcards

Was ist ein Konstruktor?

Konstruktor ist eine spezielle Methode zum Erzeugen von Objekten einer Klasse.

Signup and view all the flashcards

Was macht s1.fachsemester = 10;?

Sie speichert den Wert 10 im Attribut fachsemester des Objekts s1. (s1 ist ein Student)

Signup and view all the flashcards

Wie behandelt JShell Klassen?

Klassen werden in JShell behandelt, als ob sie jeweils in einer eigenen .java-Datei definiert wären.

Signup and view all the flashcards

Was macht int f = s1.fb;?

Die Variable f speichert den Wert des fb Attributs des Studenten s1 (12345).

Signup and view all the flashcards

Was ist die main-Methode?

Die Standardmethode, die beim Starten eines Java-Programms ausgeführt wird.

Signup and view all the flashcards

Bestandteile der main-Methode

public: öffentlich zugänglich; static: gehört zur Klasse; void: liefert kein Ergebnis; String[] args: Array von Kommandozeilenargumenten.

Signup and view all the flashcards

Was ist String[] args?

Ein Array von Strings, das Kommandozeilenargumente enthält, die dem Programm beim Start übergeben werden.

Signup and view all the flashcards

Was macht das Echo-Programm?

Das Programm gibt alle Kommandozeilenargumente aus.

Signup and view all the flashcards

Wie landen Parameter in args?

Kommandozeilen-Parameter werden als Elemente in diesem Array gespeichert.

Signup and view all the flashcards

Was bedeutet 'String nach int'?

Die Umwandlung einer Zeichenkette (String) in eine ganze Zahl (int).

Signup and view all the flashcards

Was ist parseInt(String s)?

Eine statische Methode der Integer-Klasse, die einen String in eine int-Zahl umwandelt.

Signup and view all the flashcards

Fehler bei parseInt?

Eine Ausnahme (Exception) wird ausgelöst, wenn der String keine gültige Zahl darstellt.

Signup and view all the flashcards

Study Notes

Zugriff auf Datenfelder

  • Nach Erzeugung und Initialisierung eines Objekts ist der Zugriff auf dessen Datenfelder möglich.
  • Variablenname, gefolgt von einem Punkt und dem Namen des Datenfelds ist typisch.
  • Beispiel für lesenden Zugriff: int f = s1.fb;
  • Beispiel für schreibenden Zugriff: s2.fachsemester = 10;

Zugriff auf Felder: Ja oder Nein?

  • Direkte Veränderung von Datenfeldern kann gefährlich sein, da unerlaubte Zustände entstehen können.
  • Beispiel: Direkter Zugriff auf kontoStand ohne Ãœberweisung.
  • Es gibt die Zugriffsrechte public und private.
  • Public erlaubt uneingeschränkten Zugriff auf die Datenfelder.
  • Private erlaubt nur Zugriff innerhalb der Klasse.

Geschützte Datenfelder

  • Datenfelder einer Klasse sollten als private deklariert werden.
  • Der Zugriff ist nur innerhalb der Klasse möglich, und indirekt über public-Methoden von außerhalb.

Objektmethoden

  • Die Operationen des neuen Datentyps, der durch die Klasse bereitgestellt wird, werden durch Objektmethoden realisiert.
  • Objektmethoden werden innerhalb des Klassenrumpfs definiert.
  • Objektmethoden haben Zugriff auf alle Datenfelder eines Objekts als wären es lokale Variablen der Methode.

Aufruf von Objektmethoden

  • Objektmethoden können nur im Kontext eines Objekts genutzt werden.
  • Der Aufruf erfolgt durch Objekt, dann ein Punkt, und dann der Methodenname mit den Parametern.
  • In der Methode kann auf alle Datenfelder des Objekts lesend und schreibend zugegriffen werden.

Das Schlüsselwort this

  • Parametervariablen einer Methode und Datenfelder einer Klasse können den gleichen Namen haben, was zu einem Namenskonflikt führt.
  • Der Namenskonflikt kann durch die Verwendung von this aufgelöst werden.
  • Durch das Schlüsselwort this erhält man die Referenz des Objekts, in dem man sich befindet.
  • this wird wie eine Variable vom Typ der Klasse genutzt.

Selbstreferenz eines Objekts

  • Ein Objekt kann in einer Methode eine Referenz auf sich selbst als Ergebnis liefern.
  • Die Lösung ist die Verwendung von this.
  • Durch this erhält man die Referenz des Objekts, in dem man sich befindet.
  • this kann als Ergebnis einer Methode nach außen geliefert werden.

Selbstbezug bei Konstruktoren

  • Konstruktoren sehen oft sehr ähnlich aus und unterscheiden sich oft nur in einem Parameter.
  • Bei der Bereitstellung von Konstruktoren kann ein anderer Konstruktor benutzt werden.
  • Die Lösung ist die Verwendung von this(...).
  • Hierdurch kann in einem Konstruktor ein anderer Konstruktor der gleichen Klasse aufgerufen werden.
  • this wird dann wie ein Methodenname genutzt.
  • Der this-Konstruktoraufruf muss die erste Anweisung in einem Konstruktor sein.

Das Schlüsselwort static

  • Das Schlüsselwort static kann vor einer Methode oder einem Datenfeld stehen
  • Alle mit static gekennzeichneten Komponenten einer Klasse sind Bestandteile der Klasse.
  • Datenfelder und Methoden gehören nicht zu einem Objekt der Klasse.

Static Datenfelder

  • Statische Datenfelder werden benötigt, die unabhängig von den Objekten einer Klasse sind.
  • Alle Objekte der Klasse sollen die Felder den gleichen Wert haben.
  • Statische Felder werden durch das Schlüsselwort static definiert.
  • Konstanten werden oft als static final deklariert.
  • Der Zugriff von außerhalb der Klasse erfolgt durch den Namen der Klasse: Klasse.datenfeld.

Static Methoden

  • Klassenmethoden, die unabhängig von Objekten einer Klasse sind, werden ebenfalls mit dem Schlüsselwort static deklariert.
  • In diesen Methoden steht kein "this" zur Verfügung.
  • Sie dürfen nur auf static Felder und Methoden der Klasse zugreifen.
  • In Java enthält eine Klasse Math nützliche mathematische Funktionen wie z. B. sin, cos, max, min, random, etc. als statische Methoden implementiert.
  • Der Aufruf der Methode erfolgt über den Klassennamen, ohne dass ein Objekt von Math erzeugt werden muss.

Unterschied zwischen Klassenmethoden und Objektmethoden

Merkmal Klassenmethoden Objektmethoden
Schlüsselwort static static
Zugriff Nur auf static Felder und Methoden der Klasse Zugriff auf alle Datenfelder und Methoden des Objekts
Aufruf Ãœber den Klassennamen Ãœber ein Objekt
Beispiel Math.sqrt(2) meinKonto.einzahlen(10000)

Static und Private Datenfelder

  • Es kann erwünscht sein, static-Datenfelder zu nutzen, aber den Gebrauch außerhalb der Klasse zu verbieten.
  • Dann ist es sinnvoll, zusätzlich den Modifier private zu benutzen.
  • Damit wird eine unkontrollierte Veränderung des Datenfelds verhindert.
  • Nur statische Methoden der Klasse haben Zugriff auf das Datenfeld.

Geheimnis gelüftet - Print

  • Die Methode zur Ausgabe einer Zeichenkette ist: System.out.println("Hallo Welt");
  • System ist eine Klasse.
  • System hat ein statisches Datenfeld namens out.
  • Der Typ des Datenfelds out ist die Klasse PrintStream.
  • Die Klasse PrintStream hat Objektmethoden print und println.

Die main-Methode in Java

  • Ohne Verwendung der jshell muss es eine main-Methode geben; die Klasse, die die main-Methode enthält, ist dann ausführbar.
  • Die Klasse wird in einer Datei mit dem Namen der Klasse und der Dateiendung ".java" abgespeichert.
  • Im vorliegenden Fall Hallo.java.

Aufbau der main-Methode

  • Die Methode ist öffentlich nutzbar.
  • Die Methode main ist eine statische Methode.
  • Die Methode liefert kein Ergebnis.
  • Die Methode besitzt genau eine Parametervariable mit dem Typ String[].
  • Damit kann man beim Aufruf des Programms beliebig viele Parameter vom Typ String der main-Methode übergeben.

Parameter args in main

  • Ein Programm kann alles ausgeben, was in der Kommandozeile nach dem Programmnamen kommt.

Eingabe von Zahlen

  • Statische Methode parseInt(String s) aus der Klasse Integer zur Umwandlung von String nach int.
  • Wenn die Zeichenkette keine Zahl als Parameter hat, bekommt man eine Fehlermeldung, eine sogenannte Exception, geliefert.

JavaDoc Kommentare Für Klassen

  • Spezielle Tags mit dem Präfix @ in Kommentaren für Klassen.
    • @author für Namen des Autors
    • @version für die Version der Klasse/Methode
    • @see für Verweise

Lesbarkeit von Programmen

  • Javadoc-Kommentare dienen primär den Benutzern von Klassen, um die Klasse korrekt anzuwenden.
  • Die Kommentare werden im Normalfall nur für public Klassen, Methoden und Felder erzeugt.
  • Trotzdem sollten auch private Klassen, Methoden und Felder kommentiert werden!

Aktualisierte Coding Conventions

  • Aktuelle Coding Conventions siehe ILIAS.

Zusammenfassung

  • Klassen erlauben das Definieren eigener Datentypen mit Wertemenge und Operationen.
  • Klassen können als Datentypen und Objektfabriken verwendet werden.
  • Zu den Konzepten von Klassen gehören Datenfelder und Methoden, Konstruktoren und das Schlüsselwort static.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Untitled
110 questions

Untitled

ComfortingAquamarine avatar
ComfortingAquamarine
Untitled Quiz
6 questions

Untitled Quiz

AdoredHealing avatar
AdoredHealing
Untitled
6 questions

Untitled

StrikingParadise avatar
StrikingParadise
Untitled
53 questions

Untitled

ProperMahoganyObsidian avatar
ProperMahoganyObsidian
Use Quizgecko on...
Browser
Browser