Vererbung

Pahiti78

Mitglied
Hallo Zusammen,
ich bin gerade dabei im Selbststudium mir Java anzueignen. Gestaltet sich als schwierig. Ich bin dabei eine Klasse Mitarbeiter anzulegen. Diese Klasse vererbt an Unterklassen Lehrling, Angestellter und Chef. Die Superklasse Mitarbeiter besitzt die Methoden GehaltErhoehen und DatenAusgeben(). Wenn ich jetzt in der Main Methode einen Angestellten deklariere, müsste der die Methoden DatenAusgeben erben. Aber es haut nicht hin. Vielleicht kann mir jemand helfen. Danke schonmal vorab.
Code:
class Mitarbeiter {
String m_name;			//Klassenvariable
String m_vorname;
int m_gehalt;
	Mitarbeiter (String name, String vorname, int gehalt){
		m_name=name;
		m_vorname=vorname;
		m_gehalt=gehalt;
	}
	
	void DatenAusgeben() {
		System.out.println("\n");
		System.out.println("Name:"+m_name);
		System.out.println("Vorname:"+m_vorname);
		System.out.println("Gehalt"+m_gehalt+"Euro");
	}
	void GehaltErhoehen(int erhoehung){
		m_gehalt=m_gehalt+erhoehung;
	}
	class Lehrling extends Mitarbeiter{
		//Die Klasse Lehrling erweitert Mitarbeiter
		int abgelegtePruefungen;
		Lehrling(String name, String vorname, int gehalt){
			//Vererbung von Klasse Mitarbeiter
			super (name,vorname,gehalt);
			//Erweiterung der Pruefungen
			abgelegtePruefungen=0;
		}
	}
	class Angestellter extends Mitarbeiter{
		int hierarchistufe;
		final int Max_HIERARCHIE=5;
		Angestellter(String name, String vorname, int gehalt){
			//Angestellter erbt von Mitarbeiter
			super(name,vorname,gehalt);
			//Erwerterung der Klasse Mitarbeiter
			hierarchistufe=0;
		}
		void befoerdern(){
			//Innerhalb der Klasse Angestellte existiert die Methode befoerdern. Diese existiert nicht für Lehrlinge, Chefs oder Mitarbieter
		if (hierarchistufe<Max_HIERARCHIE)
			hierarchistufe++;
		}
	}
	class chef extends Mitarbeiter{
		chef (String name, String vorname, int gehalt)
		{
			super(name,vorname,gehalt);
		}
		void GehaltErhoehen(int erhoehung){
			//Diese Methode heißt zwar gleich, wie die Mitarbeitermethode,gilt aber nur für die Chefklasse. Die eigentliche Methode wurde hier überschrieben.
		m_gehalt=m_gehalt+2*erhoehung;
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
Angestellter billy= new Angestellter("Gates","bill",2000);
billy.DatenAusgeben();
	}}
 

njans

Top Contributor
Java:
class Angestellter extends Mitarbeiter

Bei dir erbt Angestellter von Mitarbeiter.

Java:
Angestellter billy= new Angestellter("Gates","bill",2000); // geht
Mitarbeiter billy= new Angestellter("Gates","bill",2000); // geht auch
Angestellter billy= new Mitarbeiter (...); // geht nicht

Anmerkung:
- m_ Präfix bei Attributen kannst du weglassen, das wird in Java i.d.R. nicht gemacht da überflüssig durch IDE
- Methoden (z.B. DatenAusgeben) werden immer mit kleinen Buchstaben anfangen und dann camelCase (das hast du ja schon)
- Du verwendest für deine Darstellung hier im Forum Code-Tags, nehme lieber JAVA-Tags ;)
 

gescom

Mitglied
Das ist etwas tricky...
Deine Klassen Lehrling, Angestellter usw. die von Mitarbeiter erben sollen hast du als innere Klassen erstellt. Der Sinn innere Klassen zu erstellen besteht darin, die innere Klasse auch nur in ihrer äußeren Klasse zu verwenden.
Kurz gesagt erstellt eigene Klassen... Angestellter extends Mitarbeiter.
Die korrekte Instanziierung hier wäre:

Java:
Mitarbeiter.Angestellter bill = new Mitarbeiter().new Angestellter("Bill", "Gates", 2000);
 

Pahiti78

Mitglied
Hallo Zusammen,

danke für die Antworten. Aber irgendwie haut es trotzdem nicht hin.

Könnte jemand bitte einfach mal das Klassenbeispiel richtig zeigen. Also einfach die Basisklasse Mitarbeiter anlegen und dann eine Klasse Angestellter anlgen,welche erbt. Dann das Objekt Angestellte in der main Methode erzeugen. Den Rest kann ich mir dann drumherum selbst bauen, zumindestens denke ich das.:)
 

gescom

Mitglied
So sieht die Mitarbeiter Klasse aus:

Java:
public class Mitarbeiter {
	String name;
	String vorname;
	int gehalt;
	
	public Mitarbeiter(String name, String vorname, int gehalt){
		this.name = name;
		this.vorname = vorname;
		this.gehalt = gehalt;
	}
	
	void print(){
		System.out.println("Name: " + name);
		System.out.println("Vorname: " + vorname);
		System.out.println("Gehalt: " + gehalt);
	}
}

Deine Angestellter Klasse:

Java:
public class Angestellter extends Mitarbeiter{

	public Angestellter(String name, String vorname, int gehalt) {
		super(name, vorname, gehalt);
	}	
}

und die main:

Java:
public class Programm {
	public static void main(String[] args) {
		Angestellter bill = new Angestellter("Gates", "Bill", 20000);
		bill.print();
	}
}

Der Grund wieso es nicht funktioniert hat ist, du musst einen default constructor erstellen um ein Objekt
Java:
new Mitarbeiter().newAngestellter();
zu erzeugen. Vielleicht liest das ja ein Java-Pro und kann mir sagen wieso der default constructor nicht vom compiler erstellt wird :D
 

JaxxTe

Mitglied
Ich meine gehört zu haben, dass falls man in einer Klasse einen Konstruktur erstellt welcher ungleich dem Standardkonstruktor ist, dann muss man explizit noch einmal einen Standardkontruktor erstellen um diesen auch nutzen zu können.
 

Natac

Bekanntes Mitglied
Prinzipiell würde ich dazu raten:
  • Die abgeleiteten Klassen als eigene Top-Klassen zu definieren oder
  • die abgeleiteten Klassen als static ([c]public static class[/c]) zu definieren.
Sie als Instanz-Abhängige innere Klasse zu definieren macht wenig Sinn. Denn jede Klasse erbt ja schon von Mitarbeiter. Wozu sie also noch zusätzlich an eine Instanz von Mitarbeiter hängen.

Prinzipiell denke ich, dass du eigentlich jede Klasse in eine eigene Datei stecken und die Klasse Mitarbeiter [c]abstract[/c] machen möchtest.

Ein Default-Konstruktor wird nur erstellt, wenn die Klasse GAR KEINEN Konstruktor hat. Sobald ein Konstruktor geschrieben wurde, gilt nur der (oder die, falls es mehere sind).
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben