Gå til innhold

Indre og ytreklasse: Metodekall


Anbefalte innlegg

Hei!

 

Holder på med en obligatorisk oppgave ved uio, og har et lite problem.

 

abstract class Ytre {
   public boolean remove(Object o) { return false;}

   protected class Indre implements Iterator {
       public void remove(){
         // Hvordan kan jeg nå kalle metoden remove(object o) fra den Ytre?
       }
   }
}

 

Hvordan får jeg kallt på remove(Object o) når jeg er i den indre klassen?

Funker ikke med super, this, Ytre.this, og kan jo ikke lage noe objekt av ytre klasse. Kan heller ikke forandre på abstract, og navn på metoder.

Endret av oya
Lenke til kommentar
Videoannonse
Annonse
Hei!

 

Holder på med en obligatorisk oppgave ved uio, og har et lite problem.

 

abstract class Ytre {
   public boolean remove(Object o) { return false;}

   protected class Indre implements Iterator {
       public void remove(){
         // Hvordan kan jeg nå kalle metoden remove(object o) fra den Ytre?
       }
   }
}

 

Hvordan får jeg kallt på remove(Object o) når jeg er i den indre klassen?

Funker ikke med super, this, Ytre.this, og kan jo ikke lage noe objekt av ytre klasse. Kan heller ikke forandre på abstract, og navn på metoder.

8543752[/snapback]

 

Ytre.this fungerer da utmerket.

 

import java.util.Iterator;

abstract class Ytre {
  public boolean remove(Object o) { return false;}

  protected class Indre {
      public void remove(){
        // Hvordan kan jeg nå kalle metoden remove(object o) fra den Ytre?
        Ytre.this.remove(new String("abc"));
      }           
  }
}

 

Hilsen Werner

Lenke til kommentar
I Ytre:

protected Ytre denne = this;

I Indre:

this.remove(o)

:)

 

EDIT: denne.remove(o) selvfølgelig.. Eller som wernie sier..

8545983[/snapback]

:p lurt. Funka fint med den. Desverre funka ikke ytre.this.remove(...), skal være Object som sendes. Fikk opp en kjedelig feilmelding når jeg skulle kompilere.

Endret av oya
Lenke til kommentar

du kan ikke skrive ytre.this.remove, det må være Ytre.this.remove.

Mao du må bruke klassenavnet Ytre, ikke evt objektnavn.

 

Parameteren må være et objekt ja, men men du har ikke spesifisert hvilket objekt som skal sendes til Ytre sine remove metode, så derfor har wernie laget et dummy objekt. (og en String er et Object).

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...