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:
Meine Frage: Was ist der Unterschied, zwischen den beiden Wegen ein Objekt zu erzeugen und welche nimmt man i.d.R? :
Gruss und danke für jede Hilfe!!
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!!