Ich weiß wirklich nicht mehr weiter, habe aus einem Projekt mal den folgenden Code extrahiert und kann in keinster Weise verstehen, wie es zu diesem Output kommen soll...
Ich kann es mir nur so erklären, dass die init()-Methode der Subklasse sozusagen "wärend" der Anweisung "
ausgeführt wird und zwar nach der deklaration (sonst würde this.var=100 ja wohl schlecht funktionieren), aber vor der Wertzuweisung =50 (denn am Schluss hat die Variable ja den Wert 50).
Der Programmoutput ist
schreibe, dann ist der Output 0,100,100.
Bin für jeden Rat dankbar:bahnhof:
mohrenkopf
Ich kann es mir nur so erklären, dass die init()-Methode der Subklasse sozusagen "wärend" der Anweisung "
Code:
private int var=50
Der Programmoutput ist
Der Spaß: Wenn ich der Variablen keinen initialen Wert zuweise (also nurrun-single:
0
100
50
BUILD SUCCESSFUL (total time: 4 seconds)
Code:
private int var;
Bin für jeden Rat dankbar:bahnhof:
mohrenkopf
Code:
class Superclass
{
/**Konstruktor */
public Superclass()
{
init();
}
public void init()
{
//Nur zur überprüfung, dass dieser Code hier nicht ausgeführt wird
throw new UnsupportedOperationException("Override me!");
}
}
class Subclass extends Superclass
{
private int var = 50; //die fragliche Variable
@Override
public void init()
{
output(); //erzeugt als 1. Output 0
this.var=100;
output(); //erzeugt als 2. Output 100
}
public void output()
{
System.out.println(this.var); //3. Output: liefert dann 50
}
}
public class WhatHappensHere2
{
public static void main(String[] args)
{
Subclass s = new Subclass();
s.output();
}
}