Avatar billede jespersahner Nybegynder
13. januar 2003 - 10:14 Der er 6 kommentarer og
1 løsning

Kald af metode uden objekt-angivelse

Da Java er temmelig nyt for mig, har jeg lige et enkelt fundamentalt spørgsmål. Normalt vil man kalde en metode i tilknytning til et objekt, altså f.eks. 'Objekt.metode()'. Undertiden ser jeg kald af metoder uden foranstillet objekt-angivelse, altså blot 'metode()'. Dette forekommer f.eks. ved kald fra en konstruktør, der anvender en af klassens metoder og altså ikke 'uden for klassen', hvor objekt-angivelsen vel selvsagt er obligatorisk. Hvornår giver det mening, og hvornår er det tilladt at kalde en metode uden tilknyttet objekt? Håber ikke spørgsmålet er for tåget.
Avatar billede riversen Nybegynder
13. januar 2003 - 10:18 #1
ved ikke om jeg helt forstår, men du skal ikke angive objekt når metoden ligger i objekt selv eller er tilgængelig i dens superklasse, superklassens superklasse etc.
Avatar billede soreno Praktikant
13. januar 2003 - 10:22 #2
Men man kan angive "this" for at gøre det klart at det er en instans af den pågældende klasse der snakkes om, f.eks.

public class Foo
{
  public Foo()
  {
    bar();
    this.bar();//det samme resultat.
  }

  public void bar()
  {
    System.out.println("bar");
  }
}
Avatar billede jakoba Nybegynder
13. januar 2003 - 10:25 #3
når du sige "din taske ligger vist inde i soveværelset" giver det kun mening hvis du (og den du taler til) er i det hus det soveværelse er i, hvis i ikke er det bør du sige "din taske ligger vist inde i soveværelset på forsythiavej 11; 4567 uddelby pr roskilde".

det handler om addressering, der skal angives tilstrækkelig meget adresse til at lytteren (eller Java-fortolkeren) kan være helt sikke på hvilket soveværelse (eller hvilken funktion)

næsten alle Java objekter har fx en toString() funktion der tager de data der ligger i et objekt og omformer dem til en tekststreng der kan udskrives. Men det er vidt forskellige funktioner i de forskellige objekter, så toString kan næsten aldrig kaldes uden at man samtidig fortæller hvilket objekt der er tale om. Det kan man så gøre ved at skrive  objektnavn.toString().

Når der ikke står noget foran betyder det så "detteher objekt som vi allerede er i"

mvh JakobA
Avatar billede riversen Nybegynder
13. januar 2003 - 10:32 #4
jakoba: go' forklaring
Avatar billede jespersahner Nybegynder
14. januar 2003 - 11:37 #5
OK, jeg er med. Mere præcist er det vel rigtigt, at variabler og metoder, der er erklæret static kan kaldes indefra en klasse uden at foranstille klasse-navnet, mens klassenavnet skal foranstilles ved kald uden for klassen. Variabler og metoder, der er erklæret non-static kan kaldes indefra en klasse uden at foranstille objektnavn, alternativt kan 'this' foranstilles. Ved kald uden for klassen skal det konkrete objektnavn selvsagt foranstilles.
Avatar billede jakoba Nybegynder
14. januar 2003 - 12:10 #6
Netop. Og godt at se du har check på static vs. instans variabler. det er en komplikation jeg ikke rigtig turde rode mig ud i :-))
Avatar billede jespersahner Nybegynder
14. januar 2003 - 12:45 #7
Jeg kommer forhåbentlig efter det :-) Har gennem mit arbejde programmeret i SAS i mange år, men Java er jo noget helt andet. Sproget indeholder så vidt jeg kan overskue i virkeligheden kun et begrænset antal byggeklodser, som man skal forstå, mens styrken ligger i de mange klasser, som man har adgang til. Eksempelvis er jeg vildt imponeret over Java3D-pakken.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester