Kezdőoldal » Számítástechnika » Programozás » Valaki elmagyarázná mi a...

Valaki elmagyarázná mi a különbség tagváltozó, objektumváltozó és osztályváltozó között?

Figyelt kérdés
Osztályváltozó egy van és static, objektumváltozóval minden objektum rendelkezik. Ilyen kép alakult ki eddig a fejemben. A tagváltozó viszont nem tudom hogy jön a képbe. (Autodidakta módon tanulom a Java-t.=))

2016. aug. 4. 09:16
 1/9 anonim ***** válasza:

Én ezeket a magyar elnevezéseket ismerem/használom:

- objektum szintű adattag

- osztály szintű adattag


Gondolom "tagváltozó" = "adattag", tehát az a gyűjtőfogalom, a többit jól tudod. :)

2016. aug. 4. 10:58
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
Vagy member ez is tagváltozó.
2016. aug. 4. 13:34
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
A member nem igazán tudom hogy jön a képbe, de lehetséges, hogy még nem tartok ott. Jelen állás szerint elég korlátozott a tudásom. Első válaszadónak pedig köszönöm a választ.:)
2016. aug. 4. 13:46
 4/9 anonim ***** válasza:

public class A {

... private int x = 0;

... private static int y = 0;


... public int get() {

... ... int tmp = x + y;

... ... this.x++;

... ... y++;

... ... return tmp;

... }

}


A obj1 = new A();

A obj2 = new A();


// változók get elött | print | változók get után

System.out.println(obj1.get()); // x == 0 és y == 0 | output: 0 | x == 1 és y == 1

System.out.println(obj2.get()); // x == 0 és y == 1 | output: 1 | x == 1 és y == 2

System.out.println(obj1.get()); // x == 1 és y == 2 | output: 3 | x == 1 és y == 3

System.out.println(obj2.get()); // x == 1 és y == 3 | output: 4 | x == 1 és y == 4


Itt x és x nem ugyanaz! Ha megnézed, hogy mely objektumból hívtam a .get()-et, akkor látod, ezért is objektum változó, mivel minden példányosítottban külön-külön él.

Statikus y meg osztály változó, tehát bármelyik objektumból eléred. Tehát ha egyik változtat a másik az újat fogja látni. (Persze párhuzamosítás esetén van olyan, hogy synchronized, volatile kulcs szavak, mert ott viccesebb tud lenni)


Statikus másik dolga, hogy példányosítást nem igényel.


Pl.:


public class B {

... private static String msg = "Üzenet";

... public final static String EZ_EGY_KONSTANS = "Konstans";

... public static String getMsg() {

... ... return msg;

... }

}


public class Main {

... public static void main(String[] asd) {

... ... System.out.println(B.getMsg()); // Csak <OsztályNeve>.<Attr vagy Metódus() neve>

... ... System.out.println(B.EZ_EGY_KONSTANS);

... }

}

2016. aug. 4. 18:14
Hasznos számodra ez a válasz?
 5/9 anonim válasza:

Először is: ha (pl. Javaban) megírsz egy absztrakt osztály-t, akkor ezt nevezzük osztálynak, és ennek egy példányát nevezzük objektumnak. Nem tudom, hogy hol olvastad ezeket a szavakat, de ha nagyon definiálni szeretnénk őket, akkor az osztályváltozók kizárólag azok a változók, amelyek az osztály absztrakt definíciójában szerepelnek, azaz nem a példányban, csak a megírt osztályban. Majd, ha ebből csinálsz egy objektumot példányosítással, akkor annak lesznek objektumváltozói, és ezek lehetnek olyan változók is, amelyek az osztály definíciójában nem szereplenek, de az általa képzett példányban igen. Ilyen előfordulhat öröklődésnél. Tagváltozó természetesen a képzett objektum elérhető változói, ilyen pl egy tömb (mert ugye az Java-ban objektum) length "tagváltozója". Remélem tudtam segíteni.


Ui: amit írtam az nem szakirodalomból van, csak a tapasztalataim alapján leírtam, hogy én hogy gondolom

2016. aug. 4. 23:16
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

Name kell túlbonyolítani.. Van static, meg non-static, előbbi osztályszintű, utóbbi objektum szintű.


Ez mind member, vagyis tag, de javában minden az. Vannak nyelvek, ahol nem minden változó vagy függvény tagja valamelyik class-nak, mert lehet azon kívül is.

2016. aug. 4. 23:17
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

Nem*


"ha (pl. Javaban) megírsz egy absztrakt osztály-t, akkor ezt nevezzük osztálynak, és ennek egy példányát nevezzük objektumnak"


Annak a példányát nehezen, esetleg subclass-ét. (jó, jó, is-a meg minden, de akkor is..)

2016. aug. 4. 23:22
Hasznos számodra ez a válasz?
 8/9 anonim válasza:
Utolsó: absztrakt osztály alatt nem abstract class-t értettem, hanem egy osztály, ami még absztrakt, tehát nincs meghatározva. Nem szintaktikai absztrakcióra gondoltam. Továbbá látom gondot okoz a static értelmezése. A ha egy változó vagy függvény static, az lebutítva azt jelenti, hogy elég egy: Objektumnév Változónév; deklarálás, és a static dolgait máris tudod "használni" példányosítás nélkül. Ha nagyon akarjuk nevezhetjük ezt osztályváltozónak, és a nem static változókat pedig objektumváltozóknak.
2016. aug. 4. 23:26
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
Nem tudom, mit látsz, nem okozott gondot.
2016. aug. 5. 20:23
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!