# Ich komme nicht auf die Lösung! Was ist falsch daran?



## sandy (30. Jul 2005)

Hi Leutz, 

ich habe folgenden Code aber er hat im main einen Fehler den ich nicht gelöst bekomme. Kann mir jemand sagen, wo ich den Fehler genau machen. Ich weiß nicht mehr weiter. 


```
//Aufgabe 17 von Steffens Klausur 2004

public class aufg17 
{
	abstract class VerkehrsTeilnehmer
	{
		abstract public void move();
	}
	
	class Fussgaenger extends VerkehrsTeilnehmer
	{
		public void move()
		{
			maschiere();
		}
		
		private void maschiere()
		{
			System.out.println("Ich maschiere");
		}
	}

	class Radfahrer extends VerkehrsTeilnehmer
	{
		public void move()
		{
			fahreRad();
		}
		
		private void fahreRad()
		{
			System.out.println("Ich fahre Rad");
		}
	}
	
	class Autofahrer extends VerkehrsTeilnehmer
	{
		public void move()
		{
			autoFahren();
		}
		
		private void autoFahren()
		{
			System.out.println("Ich fahre Auto");
		}
	}
	

	
	public static void main(String[] args) 
	{
		VerkehrsTeilnehmer [] vt = new VerkehrsTeilnehmer[5];
		
		vt[0] = new Autofahrer();
		vt[1] = new Radfahrer();
		vt[2] = new Autofahrer();
		vt[3] = new Fussgaenger();
		vt[4] = new Radfahrer();
		
		for(int i= vt.length-1; i >=0; i--)
		{
			vt[i].move();
		}
	}
}
```


----------



## bygones (30. Jul 2005)

das Problem ist, dass die jeweiligen Klassen in der Klasse aufg17 liegen....

D.h. du brauchst eine Instanz der Klasse aufg17, um auf die inneren Klassen zugreifen zu können.


```
aufg17 t = new aufg17();
		vt[ 0 ] = t.new Autofahrer();
		vt[ 1 ] = t.new Radfahrer();
		vt[ 2 ] = t.new Autofahrer();
		vt[ 3 ] = t.new Fussgaenger();
		vt[ 4 ] = t.new Radfahrer();
```
besser zu lösen ist die aufg17 Klasse nur mit der main Methode zu haben und die anderen Klassen außerhalb der aufg17 Klasse zu definieren, dann fällt das problem weg


----------



## Bleiglanz (30. Jul 2005)

oder: alles static machen

```
public class Aufg
{
   static abstract class VerkehrsTeilnehmer
   
   static class Fussgaenger extends VerkehrsTeilnehmer
      
   static class Radfahrer extends VerkehrsTeilnehmer
   
   static class Autofahrer extends VerkehrsTeilnehmer
   
   public static void main(String[] args)
   {
      VerkehrsTeilnehmer [] vt = new VerkehrsTeilnehmer[5];
      
      vt[0] = new Autofahrer();
      vt[1] = new Radfahrer();
      vt[2] = new Autofahrer();
      vt[3] = new Fussgaenger();
      vt[4] = new Radfahrer();
      
      for(int i= vt.length-1; i >=0; i--)
      {
         vt[i].move();
      }
   }
}
```
warum du die überhaupt als innere klassen haben willst???


----------



## sandy (30. Jul 2005)

Vielen Dank. Ich hatte wohl Tomaten auf den Augen


----------



## Nick H. (31. Jul 2005)

dann brauchen wir jetzt nur noch ein paar Gurken
dann ham wir denn Salat...


----------

