28. november 2003 - 01:53
Der er
7 kommentarer og 1 løsning
Få fat i den klasse der opretter et objekt inde fra objektet
Hejsa Jeg har lavet en klasse A og en klasse B. B opretter X instanser af A. Nu vil jeg gerne vide om der er en let måde at komme inde fra en metode i A og kalde en metode i B. Har overvejet at sende en pointer med i constructoren ... men vil gerne vide om der er en letere måde ?
Annonceindlæg fra Infor
28. november 2003 - 02:29
#1
øøh...er ikke sikker på jeg helt forstår hvad du mener? men prøver nu alligevel... B nyInstans = new B(); nyInstans.metodenDuVilKaldeIBKlassen(); Hvis du vil sende den pågældende instans af klasen A til klasse B...skal du skriv følgende : Klasse B; public dinKonstruktørIKlasseA() { B = new dinKonstruktørIKlasseB(this); } Håber det kan hjælpe dig lidt?? mvh. PabloPablo
28. november 2003 - 02:38
#2
Sorry min forklaring er måske lidt vag.... så her er et eksempel. class A { minMetode() { B.bMetode(); } } class B { bMetode() { ..... } B() { A a = new A(); } } Hele pointen er at minMetode i A skal kunne benytte sig af bMetode der ligger i klasse B. hvis det er det du har vist mig PabloPablo må du lige svare igen ;)
28. november 2003 - 03:28
#3
hvis din metode i B er statisk er der slet ikke noget problem. du bruger blot klassenavnet foran metodens navn (som i dit eksempel) class A { minMetode() { B.bMetode(); } // du mangler en returtype her } class B { stativ void bMetode() { ..... } // tilføjet static B() { A a = new A(); } }
28. november 2003 - 03:30
#4
og så staver jeg galt (det skal være static. ikke stativ) static void bMetode() { ..... } // tilføjet static
28. november 2003 - 03:45
#5
Det har du da fuld stændig ret i ... det er lidt en workaround, men de virker jo også. Tak Jacoba ... hvis du vil have point skal du lige svare ;)
28. november 2003 - 03:52
#6
ok
28. november 2003 - 10:06
#7
Og hvis den ikke må være static, må du sende en "this" reference med når du opretter objektet: A a = new A(this); Og så skal constructoren i A se cirka sådan her ud: B bRef; public A(B bRef){ bRef = this.bRef; } Herefter kan du kalde metoden bRef.bMetode() fra A klassen.
28. november 2003 - 10:09
#8
Ups, det skal være: this.bRef = bRef; Ikke omvendt :)
Kurser inden for grundlæggende programmering