Fórumok
Lehet, hogy elmaradtam valamiben. Nem szoktam publikus változókat használni, csak ritkán.
Miért ezt írja ki az alábbi progi?: "B 2"
class A {
public int a = 2;
public void f() {
a+=5;
System.out.print("A ");
}
}
class B extends A {
public int a = 7;
public void f() {
this.a += 3;
System.out.print("B ");
}
}
public class task4 {
public static void main(String[]args) {
A x = new B();
x.f();
System.out.println(x.a);
}
}
Hozzászólások
Hát én pl. Debuggolnam az ide-ben és akkor kiderül. Nem programoztam javában, de gondolom a debug során jól látszana mi történik.
Köszi a választ, de már debugoltam.
Arra keresem a választ mi, miért történik.
x.f() meghívódik a B-ből, ott át is állítja a B változóját.
x.a viszont már az A-ból veszi az értéket.
Az a fieldet a B-ben definiált field elrejti, viszont az f metódust a B-ben definiált metódus overrideolja. Ezért az x.f() hívás a B implementációját futtatja és a B fieldjét módosítja, de az x.a már az A fieldjét adja vissza, mivel az x referenciának A a típusa.
Köszi a választ.
Ha jól értem röviden: A publikus változók máshogy viselkednek, mint a publikus metódusok ebben az esetben.
Igen, mert más történik: https://docs.oracle.com/javase/tutorial/java/IandI/hidevariables.html
Köszi szépen, most már teljesen értem. :-)
Mellesleg ha IDE-ben teszed mindezt, fogsz kapni két figyelmeztetést. Egyrészt az elrejtés miatt, mert nehezen érthető, hibás kódhoz vezethet. Másrészt azért, mert az override-olt metóduson nincs @Override, ami szintén az olvashatóságot segítené.
Hm. Melyik ez az IDE? IntelliJ egy rohand hangot nem mond.
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Amelyikben automatkusan lefut pl a sonarlint, ami lehet akár az idea is :)
Jó, hát plugintelepítés után már nekem is mondta. De arra számítottam, hogy valamelyikben gyárilag lesz ilyesmi.
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Rendeset kell használni, pl. eclipse vagy netbeans.
Szólna az, ha jól be lenne állítva. Valamiért by default ki van kapcsolva ez az inspection, meg még egy rakás amit támogat.
Zsír :)
Hiába kapcsoltam be, nem nyekereg, csak a sonarlint :-(
Jav: OK, meglett egy explicit Analyze hatására
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Jók ezek a szélsőséges dolgok, amelyek a nyelv értelmezésének a határát feszegetik, csak rettentő messze vannak a valós megoldásoktól és az ilyenre szoktam azt mondani, hogy mindenáron kerülendő anti-pattern, mert nem lesz jól olvasható a program, szopás lesz később nem csak módosítani, hanem megérteni is, hogy mi történik. A legtöbb kódellenőrző szoftver is percekig fejhangon sikít egy ilyen példától...
--
https://iotguru.live
Valóban production kódban ilyennek helye nincs, de tanulni még jó.
Egyébként leginkább a Java nyelv tervezői tanulhatnának belőle. Lehet jobb lenne az elrejtést syntax errornak venni, és @Override helyett szerintem pl. a C# szebben oldotta meg a kötelező override kulcsszóval.
Anti-pattern megoldásokat értelmetlen tanulni. A legjobban azt utálom, amikor valaki interjún szopat ilyenekkel jelölteket. :/
--
https://iotguru.live
attól függ milyen szint.
a senior jelölt ilyenkor mondja azt h ez egy antipattern, indoklással.
a junior mondja azt h szerinte ronda és nem írna ilyet.
--
Gábriel Ákos
Én is rühellem az ilyeneket, de fenntartom, hogy a nyelv apró "szépségeit" néha ilyen kifacsart példákkal lehet szemléltetni. Egy ilyen feladványra magától is rájöhet valaki, ha rengeteget tud már a nyelvről. De ha nem jön rá, abból nem igazán következik semmi, ezért nem jó interjúra. Főleg az a baj interjú szempontjából, hogy a valósághoz nem sok köze van a feladatnak. Egyrészt ugye valóságban ilyet nem ír az ember, másrészt a valóságban IDE-t használunk, amiben van jump to funkció, meg debugger, és ki lehet bogozni, ha mégis ilyennel találkozunk össze.
Ez jól hangzik, de egy öntanuló kezdő honnan tudja, hogy ez antipattern?
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Túl sok lesz a fejében a "WTF" gondolat.
ideális zh feladat :)
--
Gábriel Ákos
Az a kafa, mikor a mukodes direkt epul egy ilyen finomsagra :D
-
Advanced testing of Golang applications
Nem, az az igazán kafa, amikor ezt még megspékeled egy jó kis reflectionnel és futási időben valahol húsz szint mélységből kapod a Class példányt, aminek a megfelelő Fieldjét string névvel kikeresed :) Happy debugging motherfucker :P Happy debugging, suckers :P
Szerk.: idézni csak pontosan, szépen, ahogy a csillag megy az égen, úgy szabad. Én meg rosszul idéztem, javítva.
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
Főleg, ha - megtörtént eset - egy hetes szopás után azt látod, hogy a problémás sor felett ott van egy komment:
// Ebből még baj lesz...
--
https://iotguru.live
Ez mind rendben van, de egy interjún ettől még helye van egy ilyen kérdésnek. Azt is meg kell tudni indokolni, hogy valami miért antipattern, ahhoz meg már nem árt érteni, mi történik. Felhoznám még példának a Deep C-t, az üzenete független a programozási nyelvtől.