Y
YellowSun
Gast
Hallo zusammen
ist mein erster Post hier.Ich hoffe mir kann einer helfen
Ich habe 2 Klassen, die Klasse User und eine daraus abgeleitete Klasse Student. In der Main-Funktion sollen 6 Objekte in ein Array reingelegt werden. 3 vom Typ User und 3 vom Typ Student. Danach werden die Objekte mit ihren Attributen aus dem Array mittels einer For-Schleife und den jeweilligen get-Methoden herausgelesen. Dies funktioniert mit Objekten und Methoden der Klasse User. Wenn ich jetzt aber die get-Methoden der Klasse Student verwenden will, dann versteht der Compiler nicht, dass in diesem Index des Arrays Objekte des Typs Student abgelegt sind und führt die dazugehörige Methoden nicht aus: Kunden.getMatrikelnummer() und Kunden.getSemester
Eigentlich sollte dies doch durch die Ableitungskompatibilität funktionieren oder?
Ich sitze schon lange an diesem Problem und weiß absolut nicht weiter.
Klasse User:
Klasse Student
Main Methode
ist mein erster Post hier.Ich hoffe mir kann einer helfen
Ich habe 2 Klassen, die Klasse User und eine daraus abgeleitete Klasse Student. In der Main-Funktion sollen 6 Objekte in ein Array reingelegt werden. 3 vom Typ User und 3 vom Typ Student. Danach werden die Objekte mit ihren Attributen aus dem Array mittels einer For-Schleife und den jeweilligen get-Methoden herausgelesen. Dies funktioniert mit Objekten und Methoden der Klasse User. Wenn ich jetzt aber die get-Methoden der Klasse Student verwenden will, dann versteht der Compiler nicht, dass in diesem Index des Arrays Objekte des Typs Student abgelegt sind und führt die dazugehörige Methoden nicht aus: Kunden.getMatrikelnummer() und Kunden.getSemester
Eigentlich sollte dies doch durch die Ableitungskompatibilität funktionieren oder?
Ich sitze schon lange an diesem Problem und weiß absolut nicht weiter.
Klasse User:
Java:
public class User {
private String name;
private int maxBooks;
User() {
name = "unbekannt";
maxBooks = 3;
}
User(String name, int maxBooks) {
this.name = name;
this.maxBooks = maxBooks;
}
void Setname(String name) {
this.name = name;
}
void setmaxBooks(int maxBooks) {
this.maxBooks = maxBooks;
}
String getName() {
return name;
}
int getMaxBooks() {
return maxBooks;
}
}
Klasse Student
Java:
class Student extends User {
private int semester;
private int matrikelnummer;
Student() {
super();
semester = 1;
matrikelnummer = 0000;
}
Student(String name, int maxBooks, int semester, int matrikelnummer) {
super(name,maxBooks);
this.semester = semester;
this.matrikelnummer = matrikelnummer;
}
void setSemester(int semester) {
this.semester = semester;
}
void setMatrikelnummer(int matrikelnummer) {
this.matrikelnummer = matrikelnummer;
}
int getSemester() {
return semester;
}
int getMatrikelnummer() {
return matrikelnummer;
}
}
Java:
public static void main(String[] args) {
User[] Kunden = new User[6];
Kunden[0] = new User("Johannes", 1);
Kunden[1] = new Student("Lisa", 12, 4710, 5);
Kunden[2] = new User("Maria", 3);
Kunden[3] = new Student("Nora", 10, 4713, 3);
Kunden[4] = new Student("Josef", 11, 4714, 6);
Kunden[5] = new User("Irina", 3);
for (int i = 0; i <= 5; i++) {
if (Kunden[i] instanceof Student)
{
System.out.println(Kunden[i].getName() + " Student/in max Buecher: " + Kunden[i].getMaxBooks() + "; Matrikelnummer: " + Kunden[i].getMatrikelnummer() + ";
aktuelles Semester: " + Kunden[i].getSemester());
}
else {
System.out.println(Kunden[i].getName() + " max Buecher: " + Kunden[i].getMaxBooks());
}
}
}
[/Java]