13375k1133z Skrevet 18. desember 2011 Del Skrevet 18. desember 2011 (endret) Hei! Dette er noe jeg har tenkt lenge på, jeg sliter rett å forstå hensikten med "this" hvis vi f.eks har en konstruktør (anta at navn og alder er feltvariabler): public klasse (String navn, int alder){ this.navn this.alder; } public klasse (String n, int a){ navn = n; alder = a; } hva er forskjellen på disse konstruktørene og hva er hensikten til this? Endret 18. desember 2011 av 13375k1133z Lenke til kommentar
javanuben Skrevet 18. desember 2011 Del Skrevet 18. desember 2011 this er en peker til objektet du er i. (Litt dårlig formulert kanskje?) Ta følgende eksempel: public class MyClass { private String name; public MyClass(String name) { name = name; // Denne vil ikke gjøre særlig mye this.name = name; // Denne vil sette medlemsvariabelen name, til innholdet i variabelen name (argumentet) } } Konstruktørene nedenfor, derimot, gjør akkurat det samme, men det kan argumenteres for at den første er mer lesbar: public MyClass(String n) { this.name = n; } public MyClass(String n) { name = n; } Lenke til kommentar
13375k1133z Skrevet 18. desember 2011 Forfatter Del Skrevet 18. desember 2011 Takker og bukker! sånn helt konkret, hva er det this lar deg gjøre, når vi tenker på objekt ? Lenke til kommentar
javanuben Skrevet 18. desember 2011 Del Skrevet 18. desember 2011 På sparket kommer jeg ikke på noe "konkret" den lar deg gjøre, som du ikke på annet vis får gjort. Men den gjør (etter min mening) kode mye mer leselig, ved at den forteller at denne metoden kalles på dette objektet, eller denne variabelen er en medlemsvariabel osv.. Enn om du f.eks. kaller en metode "ut fra løse luften". Hovedbruken (rett meg hvis jeg tar feil) til "this" er vel å la deg bruke "shadowed" felter, som i eksemepelet mitt over, eller lignende. "this" kan vel også brukes til å kalle andre konstruktører inne den samme klassen. Står litt mer om det her. Lenke til kommentar
13375k1133z Skrevet 18. desember 2011 Forfatter Del Skrevet 18. desember 2011 Supert, tusen takk for all hjelp! Lenke til kommentar
LostOblivion Skrevet 19. desember 2011 Del Skrevet 19. desember 2011 (endret) Du kan f.eks. bruke this til å konstruere medlemmer som trenger en referanse til deg selv. Det under kunne ikke gjøres uten this: class Parent { String name; Child child; public Parent(String name) { this.name = name; child = new Child("Ole Nordmann", this); //< Merk bruken her } } class Child { String name; Parent parent; public Child(String name, Parent parent) { this.name = name; this.parent = parent; } } Et annet eksempel: public MyFrame extends JFrame implements MouseListener { public MyFrame() { this.setTitle("Demo"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Add mouse listener this.addMouseListener(this); //< Merk bruken her this.setSize(640, 480); this.setVisible(true); } public mousePressed(MouseEvent e) { System.out.println("Mouse pressed!"); } public mouseReleased(MouseEvent e) { System.out.println("Mouse released!"); } } Endret 19. desember 2011 av LostOblivion Lenke til kommentar
GeirGrusom Skrevet 24. desember 2011 Del Skrevet 24. desember 2011 This løser også opp i utvedigheter. Hvis du har et argument med samme navn som en medlem i klassen må du bruke this for å skille dem. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå