Klassen, Unterklassen, Vererbung - Compilerfehler

java starter

Mitglied
nopaste.info - free nopaste script and service

Guten Tag,

Die Aufgabe ist folgende: Ich will eine Klasse Person erstellen mit den Attributen Name und Alter;
Danach will ich zwei Subklassen Mitarbeiter und Student erstellen, die einmal um das Attribut Abteilung, einmal um das Attribut Matrikelnummer erweitert werden;
Danach soll man eingeben, wie viel personen man eingeben will und ein x eingeben, falls es sich um einen Mitabeiter handelt
Nachdem man dann die nötigen Informationen wie name, alter und abteilung/matrikelnummer eingegebn hat, soll das in einem Array gespeichert und ausgegeben werden!

Ich bekomm jedoch um die 30 Fehlermeldungen, fast immer mit error:class, interface or enum expected, kann jemand helfen?
 
Was mir so auf die Schnelle aufgefallen ist:

Pro Datei kannst du nur eine
Code:
public
Klasse definieren.

Methoden müssen innerhalb einer Klasse liegen.
 
ich bin wirklich relativ neu; drum wie umgehe ich das Problem, bzw. löse das Problem?

theoretisch muss ja sowohl die Person, als auch Mitarbeiter und Student public sein, oder?
 
Ihr vergesst immer, was für einen Anfänger ihr hier sitzen habt 😉

Also ich mach ne Javadatei mit der Klasse Person, eine mit der Klasse Mitarbeiter und einer mit der Klasse Student und wohin kommt dann meine Main-Methode?
Und wie bekomme ich es hin, dass die main-Methode dann auch auf andere Javafiles zugreifen kann?
 
Also ich mach ne Javadatei mit der Klasse Person, eine mit der Klasse Mitarbeiter und einer mit der Klasse Student [...]
Richtig, namens [c]Person.java[/c] etc.
[...] und wohin kommt dann meine Main-Methode?
Wohin du willst. Kannst dir eine Klasse [c]TestPersonenVererbung[/c] oder was auch immer schreiben. Oder aber auch die [c]main()[/c] in eine der 3 Klassen schieben.
Und wie bekomme ich es hin, dass die main-Methode dann auch auf andere Javafiles zugreifen kann?
Der Compiler muss jeweils die Abhängigkeiten kennen. Entweder funktioniert es ganz normal per [c]javac *.java[/c], oder du musst noch [c].[/c] in den Classpath aufnehmen ([c].[/c] = current dir), also [c]-cp=.[/c]. Kann dir sicherlich jemand beantworten, welcher öfters als ich [c]java[/c] und [c]javac[/c] verwendet 😉
Auch fürs Starten des Programmes ist es danach nur nötig, dass die Dateien im gleichen Ordner sitzen (da sie im gleichen - default - Package liegen werden*).

* Ich geh einfach mal davon aus, dass du Packages noch nicht kennst: Galileo Computing :: Java ist auch eine Insel - 3 Klassen und Objekte
 
Okay, danke für die sehr hilfreiche Antwort, hab das auch so verstanden... 🙂
das javac *.java heißt ja nichts anderes als alle Javadateien in diesem Ornder compilieren; Kommt dann eigentlich eine .class-Datei heraus oder mehrere?

Hab auch gerade in der Musterlösung geschaut, da wird nur die Person als public definiert und Mitarbeiter/Student nur als class-Datei, habe das jetzt auch geändert und bekomme folgenden Quelltext, der aber immer noch 30 Fehler aufweißt, was ist jetzt noch falsch?🙁

nopaste.info - free nopaste script and service
 
Ahhhh, jetzt klappt es, vielen Dank...

Ach, eine Frage noch: Ich habe bei int-Zahlen den Befehl int a=EingabeInt() haben, er wollte letztendlich aber int a=Integer.parseInt(eingabe()) haben, kann mir jemand sagen, wann man was benutzt?
 
Java ist streng typisiert. Du hast eine Variable vom Typ int und willst Ihr den Rückgabewert einer Methode eingabe() zuweisen, die Strings zurück liefert. Das geht bei Java nicht.

Was aber geht ist, wenn der String nur aus Zeichen besteht, die man int-Wert interpretieren kann, das Ergebnis der Interpretation zu erhalten. Einen Wert aus einem String lesen heißt "parsen". Du willst einen int haben, also Integer.parseInt.

Das geht natürlich nur bei Strings, die auch als int interpretierbar sind. Dazu einige Beispiele:
Java:
// Kann als int-Wert interpretiert werden, alles ok.
int a = Integer.parseInt("3");

// "3.0" ist zwar eine Zahl, aber kein int. Geht also nicht
// Könnte aber als Fließkommazahl interpretiert werden.
// Hierfür siehe: Float.parseFloat und Double.parseDouble
int b = Integer.parseInt("3.0");

// "Hallo" ist überhaupt keine Zahl, geht also auch nicht
int c = Integer.parseInt("Hallo");
 

Zurück
Oben