Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi! Vielleicht kann mir hier jemand helfen. Ich dachte, ich hätte das System von Abstrakten Methoden, Vererbung und ähnlichem verstanden, doch dann ist jetzt wieder ein kleines Rätsel aufgetaugt...
Und zwar hab ich hier die Klasse PersonWU. Von der wird Student abgeleitet.
Hier der Code:
Code:
package wu;
import java.util.*;
public abstract class PersonWU {
String name;
Date gebDate;
public abstract void einsteigen();
public abstract void print();
}
package wu;
import java.util.*;
public abstract class Student extends PersonWU {
String matrNr;
String studium;
public void einsteigen(String name, String matrNr, String studium){
super.name=name;
this.matrNr=matrNr;
this.studium=studium;
}
public void print(){
Student a[] = new Student[3];
for (int i=0; i<a.length; i++){
System.out.print("Name: ");
System.out.print(a[i].name + " ");
System.out.print("Studium: ");
System.out.print(a[i].studium + " ");
System.out.print("Matrikelnummer: ");
System.out.println(a[i].matrNr);
}
}
}
Und jetzt meine Frage. In PersonWU hab ich 2 abstrakte Methoden deklariert, die ich dann in PersonWU genauer beschreiben will. Warum schreibt mir der Compiler, dass ich die Klasse Student auch als abstrakte Klasse definieren muss? Ich versteh das nicht. Ist doch eigentlich nicht notwendig, weil ich ja die Methoden nicht mehr als abstrakt deklariere. Und das komische ist, wenn ich keine Übergabeparameter habe, dann nimmt ers - hat es vielleicht damit etwas zu tun?
Methoden können denselben Namen, aber andere Argumente haben. Wenn so ein Fall auftritt, wird jede Methode als einzelne Methode betrachtet (sie werden nicht verschmolzen).
public abstract void einsteigen(); verlangt eine Methode einsteigen(), ohne Argumente.
Macht auch Sinn, denn wenn "einsteigen()" aufgerufen werden soll, aber da plötzlich Argumente sind, ist ein crash vorprogrammiert.
EIne frage hab ich dann aber noch, wenn du sagst, es hängt von den Parametern ab. Wenn ich dann in der abstrakten methodendeklaration die parameter übergebe,(geht das überhaupt?), dann kann ich die methode inkl. Parameter weterverwenden, oder?