Ok, mam teraz dostęp do eclipse, przy czym ograniczmy się do int anie Arraylist:
Kod ma trzy klasy:
package Test;
import java.util.ArrayList;
public class Test {
public int zmiennaInt=9, z=0;
public ArrayList<String> aList = new ArrayList<String>();
public static void main(String[] args) {
// Tworze obiekt klasaA
Test klasaA = new Test();
KlasaB klasaB = new KlasaB();
klasaB.wyswietl();
KlasaC klasaC = new KlasaC();
klasaC.wyswietl();
// PROBLEM NR 3
klasaA.z = klasaA.zmiennaInt;
klasaA.z = klasaA.getZmiennaInt();
// this.z = this.getZmiennaInt();
}
public int getZmiennaInt()
{
return zmiennaInt;
}
public void setZmiennaInt(int a)
{
zmiennaInt = a;
}
}
package Test;
public class KlasaB
{
public int a;
public void wyswietl()
{
Test klasaA = new Test();
a = klasaA.getZmiennaInt();
System.out.println(a);
}
}
package Test;
public class KlasaC
{
public int a;
public void wyswietl()
{
Test klasaA = new Test();
a = klasaA.getZmiennaInt();
a++;
System.out.println(a);
}
}
W metodzie main tworzę obiekt klasaA klasy test. Potem korzystam z metody wyświetl z klasyB i klasyC. Żeby to zrobić muszę utworzyć odpowiednie obiekty. To jest dla mnie jasne.
Nie rozumiem czemu, skoro w metodzie main utworzyłem obiekt klasaA, to w metodach wyświetl obiektów klasaB i klasaC muszę na nowo go tworzyć. Czy ja tworzę tylko dodatkowe referencje do tego samego obiektu? Czy jeśli w obiekcie klasaB będę miał dodatkową metodę np wyświetl 2, która także będzie potrzebować pól z obiektu klasaA, to w tej metodzie znowu muszę definiować obiekt klasaA?
Jeszcze jedna rzecz z innej beczki. W klasie Test jest zapis klasaA.z = klasaA.getZmiennaInt();
To jest jasne, wskazuję obiekt i pole tudzież obiekt i metodę.
Dlaczego jednak zapis this.z = this.getZmiennaInt(); wywołuje w Eclipse błąd "Cannot use this in a static context"? Czy this nie odnosi się do obiektu z którego metoda jest wywoływana? czy może jednak mogę go użyć tylko w odniesieniu do pola statycznego?