Warum bietet mir eclipse den new-Operator nich an

AKST

Erfahrenes Mitglied
Hallo Leute,

ich habe diesen einfachen Code erstellt:

Code:
package package1;

public class Tier {
	
	 
	 void ausgabe(){
		System.out.println("Ich bin ein Tier");	
	 }

   public class Säugetier extends Tier{
  	
	void ausgabe(){
		System.out.println("Ich bin ein Säugetier");	
	 }
  }
  
  public class Mensch extends Säugetier{
	
	void ausgabe() {
		System.out.println("Ich bin ein Mensch");
		
	}	
  }   
}

Jetzt möchte ich ein Objekt von Mensch erzeugen. Und muss hier den "Umweg" über die Klasse Tier gehen.
Code:
import package1.Tier;
public class AbstractDemo {

	public static void main(String[] args) {
	
	  Tier.Mensch heinz = new Tier().new Mensch();
	  
	  heinz.ausgabe();  	
	}
}

Wenn ich nun
Code:
Tier.Mensch heinz = new Tier().
eingebe bekomme ich von der Codecompeltition von Eclipse kein new angeboten, weiss jemand warum das so ist?
 
Zuletzt bearbeitet:
Was ich ebenfalss nicht verstehe, warum muss ich den Umweg über
Code:
Tier.Mensch heinz = new Tier().new Mensch();
gehen? Im Buch "Java ist auch eine Insel" macht der Autor das ganz einfach über
Code:
Tier m = new Mensch();
Das will eclipse beim besten Willen nicht annehmen. Woran liegt das. Im besagten Buch handelt es sich ebenfallss um eingeschlossene Klassen. Also die Klasse Mensch ist von der Klasse Tier abgeleitet und ist in dieser eingeschlossen.
 
Zuletzt bearbeitet:
Hallo!

Du musst new Tier().new Mensch(); verwenden, da du Mensch als Innere Klasse in der Klasse Tier definiert hast. Das Präfix "Tier" gibt quasi den Namensraum für diese Klasse an.

Wenn du die Klassen in einzelnen Dateien erstellt hättest könntest du auch
mit Tier m = new Mensch(); arbeiten.

Gruß Tom
 
Hallo Thomas,

erstmal danke für deine Antwort, aber das war mir schon klar. Was ich mich ja frage ist, warum mir eclipse kein new an der von mir beschriebenen Stelle "anbietet".
Ich habe mir das Beispiel im buch nochmal genauer angeschaut, und dabei handelt es sich nicht um innere Klassen, sondern die stehen nur untereinander.
:mad: :)

naja egal, was neues dazugelernt...
 
Zuletzt bearbeitet:
Zurück