19. januar 2001 - 12:41Der er
12 kommentarer og 3 løsninger
this reference???
Hvad refererer this til i følgende kode:
public class MyList extends Applet implements ActionListener, ItemListener { private List colorList; public void init() { colorList = new List(5, false); colorList.addActionListener( this ); colorList.add ItemListener( this );
Puha det med actionlistener taget pænt lang tid at forklare, så det springer jeg lige over.
Men at en \'this\' reference peger på sig selv er ikke så mystisk. Objektet ved godt hvem den selv er :-)
Det minder lidt om hvis du peger på dig selv, så er din finger der peger \'this\' referencen.
En ActionListener er en funktion som man kan sige lytter på om der sker ændringer. F.eks. \'vågner\' den hvis man vælger et menupunkt. Det er lidt svært at forklare, og det er lang tid siden jeg har arbejdet med den grafiske del af java :(
Jeg roder mest med web baserede ting i øjeblikket.
Så lige den del er der uden tvivl andre der bedre kan forklare.
I alle componetner, hvor der kan ske en \"action\" kan man tildele den en actionlistener. Det gør man med funktionen:
addActionlistenet(Actionlistener)
Den kunne være en Button, List, PopMenu eller mange andre..
Da du gerne vil fange dine disse actions (når der bliver trykket mm.), sørger du rigtig nok for at \"implements Actionlistener\". Dermed arver din applet fra Actionlistener, og er derfor nød til at indeholde funktionen actionPerformed\"... Det er nemlig her mange fanger disse events/actions.
Altså når du implements Actionlistener, så er din applet-klasse også en ActionListener
This refererer altid til den klasse du er i! Det passer også fint her. Du kalder funktionen på din liste
colorList.addActionListener( this );
og funktionen skal have en actionListener som argument, og det er din appelt-klasse jo, så derfor skriver du this!
Den arver ikke, du kan kun arve hvis du bruger \'extends\' den implementerer et interface, som rigtigt nok kræver at du har en \'actionPerformed\' metoden.
Jeg synes lige det skulle pointeres, da Gooky er \'grøn\' :-)
Jeg giver disky ret. Ved at arve fra en abstrakt klasse bruges \"extends\" og i en abstrakt klasse kan der godt være ikke-abstrakte metoder. Fuldt færdigkodet.
I et interface er alle metoder altid abstrakte så man får aldrig nogle metoder med, ved at implementere et interface. Man får en \"kontrakt\" som skal overholdes. Ok konstanter kan medfølge så i den forbindelse kan der være tale om at der arves.
Der er også interfaces i java som ikke kræver nogen metoder, men kun virker som et flag for compileren, fx Serializable.
nå, men nu tror jeg er jeg er ved at være med... For de fine svar propper jeg lige ekstra 30 point i puljen også kan i dele de 60...
Som jeg har forstået det nu, så:
ved at oprette et objekt af typen \"bla\"(som er en klasse), refererer this til dette oprettet objekt... er det rigtigt? Oprettes der et nyt objekt, refererer this til dette objekt osv.
this Referencen, En instance metode kan anvende this til explicit at identificere objektet selv, Skal f.eks. anvendes hvis en metodes argument skjuler en instanse variabel Kan også anvendes til at overføre en reference til det aktuelle objekt. ps. jeg er ligeglad med point men sådan er det nu engang med this referencen!
du kan gå ind på min tidligere lærers hjemmeside http://www.rhs.dk/poulh/prog2/noter/noter.htm og kigge under klasser og objekter kig så på this referencen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(også det andet naturligvis)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.