Gå til innhold

Kalle metode i ytre klasse fra indre klasse


Anbefalte innlegg

Hei,

 

Jeg har en overliggende og en underliggende klasse. Den underliggende klassen er definert "inni" den overliggende. Jeg prøver å kalle en metode i den overliggende klassen fra en metode i dens underliggende klasse. Dette går i noen tilfeller, men ikke med overloading. Eksempel:

class Overliggende
{
  Overliggende()
  {
  Underliggende u = new Underliggende();
  }
  private class Underliggende
  {
  Underliggende()
  {
	 meh();
  }
  }
  public void meh()
  {
  System.out.println("MEH!");
  }
}
class Runner
{
  public static void main(String[] args)
  {
  new Overliggende();
  }
}

Dette funker helt fint, men hvis jeg har en metode i Underliggende og en metode med samme navn, men med en annen signatur (ie parametere), funker det ikke.

class Overliggende
{
  Overliggende()
  {
  Underliggende u = new Underliggende();
  }
  private class Underliggende()
  {
  Underliggende()
  {
	 meh(); // funker som forventet
	 meh("BLEH!"); // gir kompileringsfeil; tror jeg mener meh(), selv om det er en overloadet metode
  }
  public void meh()
  {
	 System.out.println("BAAAH!");
  }
  }
  public void meh(String foo)
  {
  System.out.println(foo);
  }
}
class Runner
{
  public static void main(String[] args)
  {
  new Overliggende();
  }
}

Så det jeg lurer på er om noen veit hvordan jeg kan gjøre dette...eller er alt håp ute? Jeg kan ikke kalle metodene noe annet, fordi jeg jobber med et interface.

 

På forhånd takk!

Endret av LostOblivion
Lenke til kommentar
Videoannonse
Annonse

Litt forskjellige signaturer på gang i disse metodene dine da..

 

public class Overliggende {
  public Overliggende() {
  Underliggende u = new Underliggende();
  }

  private class Underliggende {
  Underliggende() {
	 meh();
	 Overliggende.this.meh();
  }

  public void meh () {
	 System.out.println("Overliggende$Underliggende.meh");
  }
  }

  public void meh() {
  System.out.println("Overliggende.meh");
  }

  public static void main(String[] args) {
  new Overliggende();
  }
}

Lenke til kommentar
Litt forskjellige signaturer på gang i disse metodene dine da..

 

public class Overliggende {
  public Overliggende() {
  Underliggende u = new Underliggende();
  }

  private class Underliggende {
  Underliggende() {
	 meh();
	 Overliggende.this.meh();
  }

  public void meh () {
	 System.out.println("Overliggende$Underliggende.meh");
  }
  }

  public void meh() {
  System.out.println("Overliggende.meh");
  }

  public static void main(String[] args) {
  new Overliggende();
  }
}

Det var poenget og. ;) Takk folkens. :D Endret av LostOblivion
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...