Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet javában egy *....

Hogyan lehet javában egy *. class-ból egy másik *. class-ba változókat átvinni?

Figyelt kérdés
Most kezdtem el programozni javaában és kellene egy kis segítség egy programhoz amit éppen írok. Ha van egy fő class-om és abba deklarálok egy változót, azt hogyan tudnám egy másik class-ba használni?

2015. ápr. 22. 16:17
 1/5 anonim ***** válasza:
Pl publikus adattagokkal, de ez elég rossz gyakorlat.
2015. ápr. 22. 16:27
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

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).

2015. ápr. 22. 16:30
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
Ha statikus mező, akkor Osztálynév.mezőnév. Ha példány szintű, akkor hozz létre egy példányt(konstruktorhívás), és abban matatsz. Amúgy átvinni ctrl-X crtl-V-vel lehet.
2015. ápr. 22. 16:32
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

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.

2015. ápr. 23. 11:49
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

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).

2015. ápr. 23. 17:34
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!