Probleme beim generieren von Objekten

  • Themenstarter Themenstarter nowak
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
N

nowak

Gast
hi ihr da draussen,

hab ein Problem, ich hab in eclipse ein programm aus meinem java buch so halb abgeschrieben, aber es will mir nicht compilieren, kann mir jemand sagen, was da falsch ist ?


Code:
public class mitarbeiter_new {

	class Mitarbeiter { // Anfang der Klasse Mitarbeiter
		String m_name;
		String m_vorname;
		int m_gehalt;
		
		Mitarbeiter(String MName, String VName, int Gehalt )
			{
				m_name= MName;
				m_vorname = VName;
				m_gehalt = Gehalt;
			}
		
		void DatenAusgeben ()
			{
				System.out.println("\n");
				System.out.println(" Name :  " + m_name + "\n");
				System.out.println("Vorname :" + m_vorname + "\n");
				System.out.println("Gehalt : " + m_gehalt + "\n");
			}
		void Gehalt_erhoehen( int betrag)
			{
				m_gehalt = m_gehalt + betrag;
			}
		}//ende der Klasse Mitarbeiter
		
	public static void main(String[] args) {
		Mitarbeiter thomas = new Mitarbeiter ("Thomas","Rumpf",3000);
		thomas.DatenAusgeben();	
	}
}

die fehlermeldung ist :

java.lang.Error: Unresolved compilation problem:
No enclosing instance of type main_program is accessible. Must qualify the allocation with an enclosing instance of type main_program (e.g. x.new A() where x is an instance of main_program).

at main_program.main(main_program.java:47)
Exception in thread "main"


thx nowak
 
Du versuchst eine nicht-statische innere Klasse ohne eine Instanz der umschliessenden Klasse herzustellen.

Eine Möglichkeit wäre, die äussere Klasse zu initialisieren:
Code:
   public static void main(String[] args) {
      mitarbeiter_new.Mitarbeiter thomas = new mitarbeiter_new().new Mitarbeiter ("Thomas","Rumpf",3000);
      thomas.DatenAusgeben();   
   }

Die andere Möglichkeit (und wahrscheinlich auch die Bessere) ist auf die Klasse "mitarbieter_new" zu verzichten, und den Code anders zu schreiben:
Code:
public class Mitarbeiter(){
  ... // alles was in Mitarbeiter war

   // Die Main-Methode muss man jetzt an einem anderen Ort schreiben.
   public static void main(String[] args) {
      Mitarbeiter thomas = new Mitarbeiter ("Thomas","Rumpf",3000);
      thomas.DatenAusgeben();   
   }
}

mfg Beni
 
Beni hat gesagt.:
Die andere Möglichkeit (und wahrscheinlich auch die Bessere) ist auf die Klasse "mitarbieter_new" zu verzichten, und den Code anders zu schreiben:
Nicht nur wahrscheinlich !
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben