Hogyan lehet javában egy *. class-ból egy másik *. class-ba változókat átvinni?
Java-hoz nem értek, de más OOP-os ismereteim alapján ezek a megoldások jutottak eszembe:
1. Példányosítod az egyik osztályt a másikban. Így a példány (objektum) publikus adattagjait, metódusait el tudod érni a másik osztályban.
2. Az egyik osztályból származtatod a másik osztályt. Ekkor a privát dolgokat kivéve ugye minden elér a leszármazott osztály.
3. Ha statikus osztály az egyik, akkor a másikban el tudod érni a statikus adattagjai, metódusait (amik publikusak).
Nem kell statikus..tanulja meg szépen a propertyket.
public class Main(){
//ezt a változót módosíthatod ezen az osztályon belül, és ebben az osztályban ezt használd műveletekre
String valtozo = "valami";
//getter, ezt használod ha hozzá akarsz férni
public String getValtozo(){
return valtozo;
}
//setter, ezt pedig ha meg akarod változtatni az értékét
public void setValtozo(String val){
valtozo = val;
}
public Main(){
//konstruktor
}
}
public class MasikOsztaly(){
private final Main m;
public MasikOsztaly(Main main){
m = main;
}
//paraméter nélküli konstruktor nincsen, mert a main referencia NullPointerException-t dobna mivel az értéke nincs beállítva semmilyen objektumra, ergo null
//Egy easy metódus csak hogy lásd hozzáférsz bárhonnan
public void Mutat(){
System.out.println(m.getValtozo());
}
public void Megad(){
//itt pedig egy értéket adsz meg neki
m.setValtozo(System().console().readLine());
}
//majd a Megad és Mutat metódust meghívhatod ahol szeretnéd, ebből tisztának kell lennie a módszernek
}
Lényegében amit csinálsz az az, hogy a privát Stringnek amit a Main osztályban definiálsz, létrehozol egy kvázi publikus referenciát, ami nem teljesen így van mert ezek metódusok, de lényegében referenciaként működnek. Mivel a privát változót csak abból az osztályból érjük el amelyikben definiáltuk, ez a változók élettartama miatt van így, ezért arra nem tudunk hivatkozni, hanem a megadott metódusokat kell meghívni. Fontos, hogy - bár megoldható statikusan is ez tény, és lényegében egyszerűbb is -, viszont kezdő programozóként nem ajánlanám hogy a változókat statikusan definiáld, mivel a referenciamódszerrel egyszerűbb nyomon követni hogy mi mikor kérte le és változtatta meg a változód értékét.
Ha mégis statikusként szeretnéd használni, akkor mindössze annyi az egész, hogy:
public class Main(){
public static String valami = "valami";
public Main(){
}
}
public class Masik(){
public Masik(){
}
public void Mutat(){
System.out.println(Main.valami);
}
public void Megad(){
Main.valami = System.console().readLine();
}
}
Majd innentől lehet hivatkozni mindenféle metódusra.
Remélem érthető volt és tudtam segíteni.
Erre való a Reflection (vigyázz, nem Reflexion!). Ezzel mindent megtudhatsz, ha szükséged van rá. Ha a másikból csak .class fájl van.
Egyébként le kell tudnod kérni az adattagokat (amelyek rendszerint titkosak ugyebár).
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!