Problem mit super

Status
Nicht offen für weitere Antworten.

Javab00n

Mitglied
Moin,
ich hab hier ein folgendes Problem (bin sozusagen ein JavaAnfänger)

Erstmal meine Klassen:

Code:
public class Person {

	private String Vorname;
	private String Nachname;
	private String Geburtstag;
	private String Geburtsort;
	
	public Person ( String Vorname, String Nachname, String Geburtstag,
		String Geburtsort ) {
		
		this.Vorname = Vorname;
		this.Nachname = Nachname;
		this.Geburtstag = Geburtstag;
		this.Geburtsort = Geburtsort;
	}
	
	public String getVorname() {
		return Vorname;
	}
	
	public String getNachname() {
		return Nachname;
	}
	
	public String getGeburtstag() {
		return Geburtstag;
	}
	
	public String getGeburtsort() {
		return Geburtsort;
	}
}

Ich möchte jetzt gerne diese Klasse erweitern, meinet wegen Student oder sowas. Soll dann auch zustätzliche Attribute haben und ebenfalls einen Konstruktor gesetzt bekommen. Anschließend die passende get-Methoden entwickeln.


Code:
public class Student extends Person {
	
	private int Matrikelnummer;
	private String Studienfach;
	private int Semesterzahl;
	
	
	public Student ( int Matrikelnummer, String Studienfach,
			int Semesterzahl) {
		
		}
	
	
	public int getMatrikelnummer() {
		return Matrikelnummer;
	}
	
	public String getStudienfach() {
		return Studienfach;
	}
	
	public int getSemesterzahl() {
		return Semesterzahl;
	}
	

}

Wenn ich das aber genauso mache sagt mir Eclipse, sowas wie: must invoke another constructor ... Hab viel gegoogelt und auch bei Galileo nachgeschaut. Also den Theorieteil habe ich soweit (glaube ich) verstanden, dass Konstruktoren nicht vererbt werden können, dass sie von oben nach unten ausgeführt werden usw. Aber wie mache ich das jetzt? Sitze schon Stunden daran und komme nicht klar damit :-(
 

fjord

Bekanntes Mitglied
Der Grund dafür ist, dass immer ein Konstruktor der Superklasse aufgerufen werden muss. Sofern keiner von dir explizit aufgerufen wird, wird versucht implizit den Default Konstruktor aufzurufen. Den default Konstruktor (also der ohne Argumente) war bei Person nicht vorhanden.

Statt dass du in Person den default Konstruktor erstellst, würde ich eher den Konstruktor von Student erweitern. Da jeder Student auch eine Person ist, musst du sowieso sowas wie Name, Geburtstag usw. angeben.
Code:
public Student (String Vorname, String Nachname, String Geburtstag,
    String Geburtsort, int Matrikelnummer, String Studienfach,
    int Semesterzahl) {
        super(Vorname, Nachname, Geburtstag, Geburtsort);
}
Hier wird mit super(...) explizit der Konstruktor der Superklasse aufgerufen, so dass dein Problem nicht mehr besteht. Außerdem werden auch gleich die anderen Parameter richtig gesetzt.

Noch ein kleiner Tip: Variablennamen werden üblicherweise klein geschrieben.
 

L-ectron-X

Gesperrter Benutzer
Ich empfehle außerdem auch noch set()-Methoden einzufügen, sonst kannst du keine Daten mehr ändern.
Außer du erstellst ein neues Objekt.
 

Javab00n

Mitglied
Ja vielen herzlichen Dank für eure Antworten.

Ich habe das Problem gelöst:


Code:
public class Student extends Person {
	
	private int Matrikelnummer;
	private String Studienfach;
	private int Semesterzahl;
	
	
	public Student ( String Vorname, String Nachname,
			String Geburtstag, String Geburtsort,
			int Matrikelnummer, String Studienfach,
			int Semesterzahl) {
		
		super(Vorname, Nachname, Geburtstag, Geburtsort);
		this.Matrikelnummer = Matrikelnummer;
		this.Studienfach = Studienfach;
		this.Semesterzahl = Semesterzahl;
		
		}

	public int getMatrikelnummer() {
		return Matrikelnummer;
	}
	
	public String getStudienfach() {
		return Studienfach;
	}
	
	public int getSemesterzahl() {
		return Semesterzahl;
	}
	
	void setMatrikelnummer( int neuMatrikel) {
		Matrikelnummer = neuMatrikel;
	}
	
	void setStudienfach ( String neuStudien ) {
		Studienfach = neuStudien;
	}
	
	void setSemesterzahl ( int neuSemester ) {
		Semesterzahl = neuSemester;
	}
}

Und hab nun eine neue Datei (Main.java) angelegt mit einer main-Methode um das Ganze mal zu testen:


Code:
public class Main {

	
	public static void main(String[] args) {
		
		Student kt = new Student();
		kt.setMatrikelnummer(12344566);
		kt.setSemesterzahl(3);
		kt.setStudienfach("Maschinenbau");
		
		System.out.println("Matrikelnummer: " + kt.getMatrikelnummer());
		System.out.println("Semester: " + kt.getSemesterzahl());
		System.out.println("Studienfach: " + kt.getStudienfach());
		
		
		}

}

Jetzt meckert Eclipse und streicht new Student(); rot an mit der Begründung, dass der Konstruktor Student() undefiniert sei?!?!?!

Also ich lerne ja zurzeit noch und habe ein ähnliches Beispiel von einem Buch, dort scheint es zu funktionieren, hab eigentlich nicht viel verändert ...
 

Marco13

Top Contributor
Student hat keinen Konstruktor, der keine Argumente bekommt. Und das ist auch gut so! Ein Student BRAUCHT einen Namen usw. Also nicht
Student kt = new Student();
kt.set(...)
sondern
Student kt = new Student("Foo", "Bar", "12.3.45", "Hier", 12345, "InformatikNatürlich", 4234);


Deswgen auch eine kleine "Kritik" an den Aussagen
Ich empfehle außerdem auch noch set()-Methoden einzufügen ... und
Setter gehören natürlich mit rein, ...
set-Methoden bietet man für ein Field an genau dann, wenn man das Field ändern können will, D.h. bei Fields, die nicht geändert werden können sollen, bietet man sie NICHT an. Man könnte jetzt drüber philosophieren, ob man die Matrikelnummer ändern kann (ich denke doch nicht?), oder den Namen (in der Realität geht das zwar, aber... hm) - aber spätestens Geburtstag+Ort KANN man garantiert NICHT ändern, und dafür sollte es darum IMHO auch keine set-Methoden geben.


EDIT: "nicht viel verändert" ist gut: "Och, so ein Semikolon hier und da, da soll der Compiler mal nicht so pingelig sein..." :p
 
P

P

Gast
der Standard-Konstruktor existiert nur, wenn kein anderer Konstruktor definiert wurde, bis du ihn wieder explizit hinschreibst.

D.h.: new Student() funktioniert, sofern du in der Klasse keinen anderen Konstruktor wie public Student(ParaTyp para...) definiert hast. Damit der wieder da ist, musst du den mit
public Student() {
...
}
wieder herzaubern.

Oder du rufst in deiner main den gebastelten Konstruktor direkt mal auf:
Student kt = new Student("Peter", "Lustig", "01.01.2001", "Berlin", 12345, "Informatik", 5);

VG
 

fjord

Bekanntes Mitglied
André Uhres hat gesagt.:
Ein default Kontruktor ist nie schlecht. [...]
Ganz so pauschal würde ich das nicht sagen. Bei immutable Wrappern, wie z. B. Integer, der auch keinen hat, würde ein default Konstruktor meiner Meinung nach keinen Sinn machen und wäre damit überflüssig.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
J Problem bei Umrechnung von Hex in Bin Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben