- Azonnali mobilos kérdések órája
- Xiaomi 14T - nem baj, hogy nem Pro
- Magisk
- Samsung Galaxy Watch - időtálló
- Mobil flották
- Szerkesztett és makrofotók mobillal
- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- Apple iPhone 17 Pro Max – fennsík
- iPhone topik
- Android alkalmazások - szoftver kibeszélő topik
Új hozzászólás Aktív témák
-
BaLinux
tag
Nyugodtan
Bár úgy látom, hogy a kérdéseidre kifejtettem már a választ, csak nem pont ezekkel a példákkal... na lássuk:
1. A hiba valóban az, hogy oda kell a static, ugyanis (ahogy már leírtam): tetszőleges osztályban definiált static függvény osztálypéldány nélkül hívható. Ez azt jelenti, hogy nem tud hozzáférni (nem ''látható'' a függvény törzséből) semmilyen nem-static osztályváltozó. A nem-static belső osztályokra ez a szabály azért vonatkozik (tehát nem tud létrehozni olyan belső osztály típusú objektumot), mert a nem-static belső osztályok példányainak alapból rendelkezniük kell referenciával a külső osztályuk (amiben definiáltad a belső osztályt) egy példányára. Méghozzá pontosan arra, amely teremtette őket.
A belső osztály példány referenciája a külsőre úgy néz ki, hogy A.this (ha A a külső osztály neve). Remélem összeállt...
2. két lehetőség: nem kell static a B osztály elé, vagy éppen static kell az int a elé.
A szabály ugyanaz, mint az előbb: mivel a belső osztály statikus, nem kötődik külső oszályhoz, így a belső példány nem is rendelkezik információval (referenciával) az ő bennfoglaló objektumáról, ami ha a staticot eltöröljük, az A osztály egy példánya lenne.
Így a
a = aa;
sorban nem tud hozzáférni az 'a' változóhoz, ugyanis a szimbólumtáblázat látható részében (hogymondják szépen magyarul azt, hogy scope?) nincs ilyen változó!
Ugye amikor azt írod hogy 'a', ebben az esetben prioritási sorrendben így tud feloldódni a jelentése:
1) lokális blokkban ({ } közötti utasítások) lévő változók
2) szülő blokkban lévők
3) rekurzívan a függvény fejlécig, itt a fgv paraméterek jönnek be
4) osztályváltozók (ez az ami ilyen bonyi szabályokkal írható le, ahogy eddig tettem)
Az utóbbinál az 'a' szimbólum ekvivalens a 'this.a'-val, amennyiben a belső rendelkezik nem-static 'a' nevű változóval; továbbá ekvivalens 'Belsoosztaly.a'-val, ha rendelkezik static 'a' nevű változóval.
Van egy ''5.'' szint, amennyiben egy belső osztályban használt változóról van szó. Ilyenkor az 1-es ponttól oldjuk fel ismét rekurzívan attól a helytől kezdve, ahol az osztályt definiáltad... így lesz az 'a'-ból 'Kulsoosztaly.this.a', ha a belső osztály nem static és a a Kulsoosztaly rendelkezik nem static 'a' változóval, a static szintaxis meg egyenlő a fentivel, tehát a 'Kulsoosztaly.a' static(!) változó mindenhonnan hozzáférhető, akár static, akár nem a belső osztály.
Hmmm... remélem érthető
[Szerkesztve]
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Viszonylag olcsó, 26,5 hüvelykes QD-OLED monitor bukkant fel az MSI kínálatában
- OLED TV topic
- Okos Otthon / Smart Home
- Házimozi belépő szinten
- Brogyi: CTEK akkumulátor töltő és másolatai
- Gyúrósok ide!
- Azonnali mobilos kérdések órája
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- PlayStation 5
- World of Tanks - MMO
- További aktív témák...
- Thrustmaster Ferrari F1 Wheel Add-On
- Új Apple Watch Ultra 2 Natural Titanium 49mm
- iKing.Hu - Apple iPhone 13 mini Kompakt erőgép, megbízható teljesítmény 256 GB
- Honor Magic V5 Ultravékony hajlítható, 120 Hz LTPO kijelzők 16/512 GB Garancia 2028. 08. 25-ig
- Bomba ár! Acer Aspire ES1 - AMD A8 I 8GB I 180GB SSD I 15,6" HD I HDMI I Cam I W10 I Garancia!
- ÁRGARANCIA!Épített KomPhone i5 14400F 32/64GB DDR5 RTX 5060 Ti 8GB GAMER PC termékbeszámítással
- Dell Latitude 5495 Full HD IPS Ryzen 5 pro 2500u Radeon Vega Mobile Gfx i5-8350u verő
- GYÖNYÖRŰ iPhone 13 mini 256GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3180
- LG 48C4 - 48" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
- Bomba Ár! HP ProBook 650 G1 - i5-4GEN I 8GB I 500GB I 15,6" HD I Cam I W10 I Garancia!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest