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

Status
Nicht offen für weitere Antworten.

sandy

Aktives Mitglied
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.

Code:
//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();
		}
	}
}
 
B

bygones

Gast
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.

Code:
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

Gesperrter Benutzer
oder: alles static machen
Code:
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???
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben