Ich muss zugeben, mich verwirren zwei Dinge:
1. Was macht die zweite Test Klasse in der 2. Datei?
2. Was hat es mit dieser Position auf sich? Wenn du auf i mit t->i zugreifst, dann sollte es doch egal sein, dass dort noch ein weitere Klassenvariabel definiert ist.
In Java sieht das Ganze etwas anders aus und ich bin mir nicht sicher, ob man dein Code ohne weiteres in Java umändern kann.
Java hat u. a. folgende Eigenschaften:
- Es gibt keine Funktionen, nur Methoden.
- Der Klassenname ist auch der Dateiname.
- Es kann keine zwei oder mehrere gleichnamigen Klassen in einem Package geben.
- Es kann nur eine Klasse pro Datei geben. Ausnahmen bilden hier Klassen in Klassen, die gehören aber nicht zum guten Stil.
- Es gibt keine Mehrfachvererbung.
- Es gibt kein Pointer.
Folgendes Beispiel würde einen ähnlichen Fehler verursachen, wobei hier x das Problem ist und nicht i.
Code:
/* Datei 1 [Test.java] */
package de.ippf.beispiel;
public class Test {
public int i;
}
/* Datei 2 [Test02.java]*/
package de.ippf.beispiel;
public class Test02 extends Test {
public int x;
}
/* Datei 3 [Main.java]*/
package de.ippf.beispiel;
public class Main {
public static void main(String[] args) {
Test t = new Test02();
t.i = 100; // funktioniert, i ist definiert
System.out.println(t.i); // gibt 100 aus
t.x = 200; // funktioniert nicht, x ist nicht definiert
System.out.println(t.x); // Fehler, x ist nicht definiert
/* und so klappt es mit beiden */
Test02 t02 = new Test02();
t02.i = 100;
t02.x = 200;
System.out.println(t02.i + " und " + t02.x); // Ausgabe: 100 und 200
}
}