was ist den dieses zur Kompilierzeit und zur Laufzeit in Java?

Harry05

Bekanntes Mitglied
Ist damit Kompilierzeit und zur Laufzeit Abhängigkeit gemeint? ->nur extra

Hi, was ist den dieses zur Kompilierzeit und zur Laufzeit in Java ? was bringt mir es als Vorteil dieses zu verstehen?
Ich habe hier mal eine Anki Gedächtnis Stütze Gemacht Nur Ich Verstehe Diese Nicht Vollkommen.

[CODE lang="java" title="Virtuelle methode"]
public class Bird {
public String getName() {
return "Unknown";
}
public void displayInformation() {
System.out.println("The bird name is: "+getName());
}
}
public class Peacock extends Bird {
public String getName() {
return "Peacock";
}
public static void main(String[] args) {
Bird bird = new Peacock();
bird.displayInformation();
}
}[/CODE]

Wie Sie in ähnlichen Beispielen im Abschnitt "Überschreiben einer Methode" gesehen haben, wird die Methode getName() in der kindsklasse Peacock überschrieben. Noch wichtiger ist jedoch, dass der Wert der Methode getName() zur *Laufzeit* in der Methode displayInformation() durch den Wert der Implementierung in der kinderklasse Peacock ersetzt wird. Mit anderen Worten: Auch wenn die Elternklasse Bird ihre eigene Version von getName()
definiert und zur *Kompilierzeit* nichts über die Peacock-Klasse weiß, verwendet die Instanz zur *Laufzeit* die überschriebene Version der Methode, wie sie auf der Instanz des Objekts definiert ist. Wir betonen diesen Punkt, indem wir in der main()-Methode eine Referenz auf die Bird-Klasse verwenden, obwohl das Ergebnis bei Verwendung einer Referenz auf Peacock dasselbe gewesen wäre. Sie kennen nun den wahren Zweck des Überschreibens einer Methode und wissen, wie es mit dem Polymorphismus zusammenhängt. Es liegt in der Natur des Polymorphismus, dass ein Objekt viele verschiedene Formen annehmen kann. Indem Sie Ihr Verständnis von Polymorphismus mit Methodenüberschreibung kombinieren, sehen Sie, dass Objekte zur *Laufzeit* auf sehr unterschiedliche Weise interpretiert werden können, insbesondere in Methoden, die in den Elternklasse der Objekte definiert sind.


Ich frage im rahmen der OCA Prüfung
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Kompilierzeit = Zeitpunkt des Kompilierens der Anwendung
Laufzeit = Zeitpunkt, an dem deine Anwendung läuft bzw. ausgeführt wird

Wenn dir der Begriff "Kompilieren" (bzw. engl. "compile") nichts sagt, dann google einmal danach.
Bezogen auf Java ist es der Prozess des Umwandelns einer Compilation Unit (.java Datei) in eine oder mehrere .class Dateien. Dieses Kompilieren passiert eben zur Kompilierzeit.

Diese dabei entstandenen .class Dateien können dann von der JVM ausgeführt werden, und der Zeitpunkt, an dem dies geschieht, wird eben Laufzeit genannt.

Bei Sprachen mit Polymorphie wird da gerne der Unterschied zwischen Kompilierzeit und Laufzeit hervorgehoben, weil zur Kompilierzeit eben noch nicht feststeht, welches Verhalten ein Code zur Laufzeit tatsächlich an den Tag legt.

Zum Beispiel einfach folgende Methode (gemäss deinem Beispiel):
Java:
public static void main(String[] args) {
  Bird bird;
  if (heuteIstMontag()) {
    bird = new Bird();
  } else {
    bird = new Peacock();
  }
  bird.displayInformation();
}
Zur Kompilierzeit kann man hier nicht sagen, was genau passiert. Es hängt davon ab, _wann_ der Code ausgeführt wird und nicht, wann er kompiliert (von .java -> .class Datei übersetzen) wird.

Oder noch ein einfacheres Beispiel:
Java:
public class EineKlasse {
  public static void meineMethode(Bird bird) {
    bird.displayInformation();
  }
}
Wenn diese Klasse kompiliert wird, weiss man zur Kompilierzeit ja nicht, was genau passiert.
Es hängt vom Laufzeittyp des Objektes (Parameter) ab.
 

White_Fox

Top Contributor
Wobei Kompilierzeit auch (zumindest im sprachlichen Umgang) auch die Zeit vor dem Kompilieren mit einschließt. Es ist die Zeit, wo du Änderungen an deinem Code vornehmen kannst.

Zur Laufzeit (=wenn das Programm läuft) kannst du das nicht mehr.

Praktisch wichtig ist das z.B. wenn du Probleme abfangen willst, die du zur Kompilierzeit oder davor nicht unbedingt hast: Datei nicht gefunden, Netzwerkverbindung abgebrochen, Server nicht erreichbar, Empfangene Daten korrumpiert, ... und du deinem Programm beibringen willst, in freier Wildbahn trotzdem zu funktionieren. Irgendwie mußt du in deiner eigenen Überlegung, aber auch in der Kommunikation mit anderen ja diesen Punkt ausdrücken können wann du noch an deinem Programm schreibst und wann es läuft.
 

temi

Top Contributor
Manche Fehler können bereits zur "Kompilierzeit" vom Compiler erkannt werden. Das sind z. B. einfache Syntaxfehler, wie vergessene Semikolon oder geschweifte Klammern. Oder Zuweisungen, die offensichtlich nicht möglich sind (sog. Typsicherheit).
Java:
Bird bird = 42; // Fehler!

Manche Fehler treten allerdings auch erst zur Laufzeit auf (@White_Fox hat schon einige Beispiele genannt) und müssen vom Programmierer berücksichtigt werden.
Java:
public static void main(String[] args) {
    Bird bird = getBirdFromCage(); // falls der Käfig leer war, dann enthält "bird" möglicherweise den Wert null
    letFly(bird);
}

public static void letFly(Bird bird) {
    bird.fly(); // Null Pointer Exception, weil "bird" keine gültige Referenz enthält
}

public static Bird getBirdFromCage() {
    // Code, der irgendwie einen Bird aus dem Käfig zurückgeben möchte
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Wie kommt dieses Ergebnis zu stande Allgemeine Java-Themen 15
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
O Compiler-Fehler Wie kompiliere ich dieses Alt-Projekt ? Allgemeine Java-Themen 9
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
cedi int Zahl in ein ASCII zeichen umwandeln und dieses in ein externes Textfenster schreiben Allgemeine Java-Themen 6
T Wie intelligent ist dieses überschriebene .equals() ? Allgemeine Java-Themen 13
M Wie heißt denn dieses grafische Element ? Allgemeine Java-Themen 2
L Wie kann man dieses "Table" Problem am besten löse Allgemeine Java-Themen 8
D wie gliedere ich dieses programm am besten? dringend! Allgemeine Java-Themen 3
B Wie heißt dieser kleine Typ links oben? Also dieses JavaVieh Allgemeine Java-Themen 5
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
M Laufzeit LinkedList Allgemeine Java-Themen 9
M verbesserte Laufzeit bei LinkedList Allgemeine Java-Themen 7
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
L Compiler-Fehler Google Guice Module zur Laufzeit zusammenstellen und binden Allgemeine Java-Themen 4
J Jasper Reports - Subreport zur Laufzeit ändern Allgemeine Java-Themen 6
O jar und EXE Dateien, Pfade zur Laufzeit Allgemeine Java-Themen 1
T Externe Java Klasen zur Laufzeit einbinden Allgemeine Java-Themen 10
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
Neumi5694 Interpreter-Fehler final Eigenschaft während Laufzeit geändert Allgemeine Java-Themen 2
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
M Sinn von Kompilierung zur Laufzeit Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
T Dateien zur Laufzeit in Java-Programm packen? Allgemeine Java-Themen 3
S Laufzeit Primzahlgenerator Allgemeine Java-Themen 18
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
F Classpath Programmteile zur Laufzeit nachladen Allgemeine Java-Themen 6
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
H ResourceBundle während Laufzeit bearbeiten Allgemeine Java-Themen 3
J Input/Output Jar-Datei zur Laufzeit erweitern Allgemeine Java-Themen 13
P Generic zur Laufzeit Allgemeine Java-Themen 4
A ar während der Laufzeit überschreiben Allgemeine Java-Themen 20
X MergeSort Laufzeit Problem Allgemeine Java-Themen 4
J Resourcen waehrend der Laufzeit aendern? Allgemeine Java-Themen 9
P Wie bei log4j den Dateipfad der Logdatei zur Laufzeit ändern? Allgemeine Java-Themen 3
X Update einer Jar während der Laufzeit Allgemeine Java-Themen 8
T Klassen Fabrik (Factory) zur Laufzeit erweitern Allgemeine Java-Themen 5
S UML zur Laufzeit ändern Allgemeine Java-Themen 10
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
L Methode in Thread mit langer Laufzeit unterbrechen (ANT executeTarget) Allgemeine Java-Themen 4
O Problem bei Darstellung der Laufzeit eines Programms Allgemeine Java-Themen 3
hdi Ressourcen dynamisch zur Laufzeit laden Allgemeine Java-Themen 15
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
N variable Anzahl von Objektinstanzen zur Laufzeit erstellen Allgemeine Java-Themen 4
P Java Konsole zur Laufzeit einblenden Allgemeine Java-Themen 4
P Klassenwahl zur Laufzeit Allgemeine Java-Themen 5
R Objekt zur Laufzeit zerstören? Allgemeine Java-Themen 12
E formartierte Ausgabe zur Laufzeit Allgemeine Java-Themen 2
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
DamienX Debug Modus zur Laufzeit erkennen Allgemeine Java-Themen 3
Stillmatic Debuggen/ Laufzeit von Methoden Allgemeine Java-Themen 2
Dragonfire Generic Typ zur Laufzeit Allgemeine Java-Themen 9
M Klasse zur Laufzeit ersetzen Allgemeine Java-Themen 10
S Wie gross ist die Laufzeit für diese Schleife?? Allgemeine Java-Themen 8
G File zur Laufzeit erzeugen Allgemeine Java-Themen 4
G Jar File zur Laufzeit ändern. Allgemeine Java-Themen 4
T Java - Compilieren während Laufzeit Allgemeine Java-Themen 3
Y JARs austauschen zur Laufzeit Allgemeine Java-Themen 11
G Datenbank zur laufzeit wechseln Allgemeine Java-Themen 11
C Innere Klassen zur Laufzeit Instanzieren Allgemeine Java-Themen 4
T Zur Laufzeit erben? Allgemeine Java-Themen 22
L HashMap / Objekte auf Festplatte zur Laufzeit auf HD swappen Allgemeine Java-Themen 7
L Zur Laufzeit eine Klasse laden, die auf jar-File zugreift Allgemeine Java-Themen 15
V Java-Programm weiss zur Laufzeit wie es gestartet wurde? Allgemeine Java-Themen 6
N Endlosschleifen automatisiert erkennen (Code oder Laufzeit)? Allgemeine Java-Themen 6
G Eindeutiges Identifizieren einer JTable/Component z.laufzeit Allgemeine Java-Themen 2
G Datei durchsuchen, lange Laufzeit! Allgemeine Java-Themen 2
A log4j 1.3 und ändern der log Konfiguration zur Laufzeit Allgemeine Java-Themen 4
Apo Zur Laufzeit Klassen mit Packages laden? Allgemeine Java-Themen 2
G genauen Typ einer generischen Klasse zur Laufzeit ermitteln Allgemeine Java-Themen 2
F Typ eines Objekts zur Laufzeit bestimmen? Allgemeine Java-Themen 8
T xverify-parameter : Workaround zur Laufzeit? Allgemeine Java-Themen 8
M Bibliotheksname zur Laufzeit ermitteln (Classloader) Allgemeine Java-Themen 7
G Klasse wird zur Laufzeit nicht gefunden? Allgemeine Java-Themen 3
@ zur Laufzeit Interface aus jar implementieren? Allgemeine Java-Themen 5
MQue Laufzeit Allgemeine Java-Themen 4
D Lautstärke einzelner AudioClips zur Laufzeit verändern Allgemeine Java-Themen 4
C Mathefunktion zur Laufzeit einlesen und dann verarbeiten Allgemeine Java-Themen 13
G Klassen zur Laufzeit einbinden Allgemeine Java-Themen 3
J Bibliotheken erst zur Laufzeit laden Allgemeine Java-Themen 5
R Drag und Drop - Fehler während Laufzeit Allgemeine Java-Themen 14
byte Generic Type einer List zur Laufzeit rausfinden? Allgemeine Java-Themen 4
A Class File zur Laufzeit laden ohne den Binary Name zu kennen Allgemeine Java-Themen 11
M Überprüfen einer zur Laufzeit geladenen Klasse Allgemeine Java-Themen 3
H Klassen aus einem Ordner zur Laufzeit laden. Allgemeine Java-Themen 6
S Laufzeit und Compilefehler Allgemeine Java-Themen 6
S JPanel zur Laufzeit verbergen bzw. wieder anzeigen lassen Allgemeine Java-Themen 4
F Objektname zur Laufzeit festlegen? Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben