Objekterzeugung Unterschied..?

Logica911

Mitglied
Morgen liebe Leute,

habe mal eine Frage bezüglich der Objekterzeugung in Java.

Hab mir eine abstracte Klasse Person gemacht, von der ich Schueler und Lehrer ableite:

Java:
package info.novatec.personen;

public abstract class Person {
	
	String name;
	int alter;
	String vorname;
	
	
	public Person(String name, int alter, String vorname){
		this.name= name;
		this.alter= alter;
		this.vorname=vorname;
	}
	
	
	public abstract String getName();
	
	public abstract void setName(String name);
	
	public  abstract int getAlter();
	
	public  abstract void setAlter(int alter);
	
	public abstract String getVorname();
	
	public abstract void setVorname(String vorname);

}

Java:
package info.novatec.personen;

public class Lehrer extends Person{
	
	int amtsdauer;
	int klassenanzahl;
	double stundenInDerWoche;

	public Lehrer(String name, int alter, String vorname, int amtsdauer, int klassenanzahl, double stundenInDerWoche) {
		super(name, alter, vorname);
		this.amtsdauer= amtsdauer;
		this.klassenanzahl= klassenanzahl;
		this.stundenInDerWoche= stundenInDerWoche;
		// TODO Auto-generated constructor stub
	}

	
	
	public int getAmtsdauer() {
		return amtsdauer;
	}


	public void setAmtsdauer(int amtsdauer) {
		this.amtsdauer = amtsdauer;
	}


	public int getKlassenanzahl() {
		return klassenanzahl;
	}


	public void setKlassenanzahl(int klassenanzahl) {
		this.klassenanzahl = klassenanzahl;
	}


	public double getStundenInDerWoche() {
		return stundenInDerWoche;
	}


	public void setStundenInDerWoche(double stundenInDerWoche) {
		this.stundenInDerWoche = stundenInDerWoche;
	}


	@Override
	public String getName() {
		return this.name;
	}

	@Override
	public void setName(String name) {
		this.name=name;
	}

	@Override
	public int getAlter() {
		return this.alter;
	}

	@Override
	public void setAlter(int alter) {
		this.alter=alter;
		
	}

	@Override
	public String getVorname() {
		return this.vorname;
	}

	@Override
	public void setVorname(String vorname) {
		this.vorname= vorname;
		
	}

}

Java:
package info.novatec.personen;

public class Schueler extends Person {
	
	int klassenstufe;
	double notendurchschnitt;
	
	

	public Schueler(String name, int alter, String vorname, int klassenstufe, double notendurchschnitt) {
		super(name, alter, vorname);
		this.klassenstufe=klassenstufe;
		this.notendurchschnitt= notendurchschnitt;
		// TODO Auto-generated constructor stub
	}
	
	
	
	public int getKlassenstufe() {
		return klassenstufe;
	}


	public void setKlassenstufe(int klassenstufe) {
		this.klassenstufe = klassenstufe;
	}


	public double getNotendurchschnitt() {
		return notendurchschnitt;
	}


	public void setNotendurchschnitt(double notendurchschnitt) {
		this.notendurchschnitt = notendurchschnitt;
	}


	@Override
	public String getName() {
		return this.name;
	}

	@Override
	public void setName(String name) {
		this.name=name;
		
	}

	@Override
	public int getAlter() {
		return this.alter;
	}

	@Override
	public void setAlter(int alter) {
		this.alter=alter;
		
	}

	@Override
	public String getVorname() {
		return this.vorname;
	}

	@Override
	public void setVorname(String vorname) {
		this.vorname= vorname;
	}

}


Meine Frage: Was ist der Unterschied, zwischen den beiden Wegen ein Objekt zu erzeugen und welche nimmt man i.d.R? :

Java:
public class PersonTest {
	
	public static void main(String[] args) {
		
	// Person p1= new Person();  <!--Nicht möglich,da abstrakte Klasse-->
	Person p1= new Lehrer("Maisle", 26, "Jessie", 2, 4, 37.5);
	Lehrer p2= new Lehrer("Maisle", 26, "Jessie", 2, 4, 37.5);

	Person p3= new Schueler("Hahne", 16, "Philipp", 10, 1.8);
	Schueler p4= new Schueler("Hahne", 16, "Philipp",10, 1.8);

	}
	
	
}


Gruss und danke für jede Hilfe!!:)
 
G

Gast2

Gast
Die Objekte erzeugst du doch immer gleich, du hast nur die Variablen anders deklariert. Da sollte man immer so allgemein wie möglich arbeiten.
Wenn du bspw. auf Methoden von Lehrer zugreifen musst, dann musst du die Variable als Lehrer deklarieren. Wenn du aber nur auf die allgemeinen Methoden aus Person zugreifen musst, dann solltest du die Variable als Person deklarieren.
Java:
Person p = new Lehrer(...);
 
S

SlaterB

Gast
zur 'Erzeugung' ist der Unterschied genau so groß
wie das Schälen eines Apfels mit Hineinlegen in eine Apfel-Brotdose
gegenüber Schälen eines Apfels mit Hineinlegen in eine normale Brotdose

das Ablegen hat mit der Erzeugung herzlich wenig zu tun, auch sonst guter Vergleich, um mich selber zu loben ;)
 

Logica911

Mitglied
Danke für deine Antwort!

Sprich wenn ich nur auf name, vorname & alter zugreifen möchte dann sage ich:

Java:
Person p1= new Schueler(...);

und wenn ich aber auch auf klassenstufe zugreifen möchte muss ich:

Java:
Schueler p1= new Schueler(...);

machen?


gruss!
 
G

Gast2

Gast
Ja, wenn du deine Variable als vom Typ Person anlegst hast du ausschließlich Zugriff auf die Methoden die in Person definiert sind.

Du kannst übrigens die getter/setter für vorname, name und alter in Person schreiben. Die sind ja für alle Unterklassen gleich.
 

Logica911

Mitglied
Ja, wenn du deine Variable als vom Typ Person anlegst hast du ausschließlich Zugriff auf die Methoden die in Person definiert sind.

Du kannst übrigens die getter/setter für vorname, name und alter in Person schreiben. Die sind ja für alle Unterklassen gleich.

stimmt, nur bei interfaces darf ich ja kein body definieren, oder?
Bei abstrakten Klassen schon.


Gruss!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
N This bei objekterzeugung Java Basics - Anfänger-Themen 6
J Wert bei Objekterzeugung verändern Java Basics - Anfänger-Themen 12
S "Sichtbarkeitsmodifizierer" und Objekterzeugung Java Basics - Anfänger-Themen 1
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
H MyID3 Problem bei Objekterzeugung Java Basics - Anfänger-Themen 4
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
Z Vererbung Objekterzeugung Java Basics - Anfänger-Themen 4
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
L Objekterzeugung Java Basics - Anfänger-Themen 3
J Klassen Fehler mit Parameter des Konstruktors bei einer Objekterzeugung Java Basics - Anfänger-Themen 5
D Verschachtelte Objekterzeugung Java Basics - Anfänger-Themen 6
E Objekterzeugung in JAVA Java Basics - Anfänger-Themen 7
F OOP Objekterzeugung in IF-Struktur Java Basics - Anfänger-Themen 2
J Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable? Java Basics - Anfänger-Themen 4
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29
N Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 5
G objekterzeugung Java Basics - Anfänger-Themen 7
S Methode für Objekterzeugung Java Basics - Anfänger-Themen 8
G objekterzeugung...absoluter anfänger :) Java Basics - Anfänger-Themen 27
S problem bei objekterzeugung Java Basics - Anfänger-Themen 8
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
P Unterschied Installation von zipped JDK vs Installer-JDK (auf Windows)? Java Basics - Anfänger-Themen 2
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
K Unterschied Information Hiding und Kapselung? Java Basics - Anfänger-Themen 2
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
H .jar unterschied .class Java Basics - Anfänger-Themen 3
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0
C Unterschied Objekte! Java Basics - Anfänger-Themen 13
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
R Erste Schritte Unterschied Array-Parameter zu Array als Parameter? Java Basics - Anfänger-Themen 7
V Unterschied Array & ArrayList Java Basics - Anfänger-Themen 13
D Geschwindigkeits unterschied bei import? Java Basics - Anfänger-Themen 13
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
L Unterschied zu C++ Java Basics - Anfänger-Themen 6
A Unterschied JDK SDK Java Basics - Anfänger-Themen 4
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
B Klassen Unterschied Konstruktoren. Java Basics - Anfänger-Themen 3
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
S Interface Unterschied: setContentPane() & getContentPane().add Java Basics - Anfänger-Themen 5
Helgon Unterschied runnable und normale jar Java Basics - Anfänger-Themen 6
D Unterschied bidirectional unidirectional Java Basics - Anfänger-Themen 10
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
I Unterschied Lizenz EPL und LGPL Java Basics - Anfänger-Themen 7
P Unterschied Windowclosed / WindowClosing Java Basics - Anfänger-Themen 10
J scheduleAtFixedRate scheduleWithFixedDelay Unterschied? Java Basics - Anfänger-Themen 17
S Erste Schritte Grundsatzfragen Unterschied Java / PHP Java Basics - Anfänger-Themen 6
P Unterschied JRE innerhalb/ außerhalb des JDK Verzeichnisses? Java Basics - Anfänger-Themen 5
H printf: Unterschied %f und %g Java Basics - Anfänger-Themen 5
M Unterschied SDK 1.4 und 1.6 Java Basics - Anfänger-Themen 5
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
T Unterschied in Zahlendarstellungen Java Basics - Anfänger-Themen 2
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
K Unterschied Klassen- und Instanzattribute Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben