Hallo!
Ich mache jetzt die zweite Übung von diesem (http://www.gailer-net.de/tutorials/java5/Notes/chap50/progExercises50.html)Tutorium.
Hier ist meine Lösung.
Jetzt meine Frage:
Wieso kann ich nicht in der classe Sonderposten in der methode anzeigen die erste System.out.println nicht einfach durch super.anzeigen() ersetzen?
Ich habe mir es so vorgestellt, dass wenn ich super.anzeige() aufrufe, werden auch alle methoden der Superclasse aufgeruft(auch die berechneVerkaufspreis der Superclasse), stattdessen wird die methode berechneVerkaufspreis der Subclasse verwendet.
Warum?
Danke.
Ich mache jetzt die zweite Übung von diesem (http://www.gailer-net.de/tutorials/java5/Notes/chap50/progExercises50.html)Tutorium.
Hier ist meine Lösung.
Java:
package OldScotch;
public class Artikel {
String artikelNr;
String bezeichung;
double einkaufspreis;
int lagerzeit;
final double HANDELSSPANNE = 0.6 ; // 60 Prozent des Einkaufspreises
final double MWST = 0.19 ; // 19 Prozent
int verkaufspreis;
public Artikel(String artikelNr, String bezeichung, double einkaufspreis, int lagerzeit){
this.artikelNr=artikelNr;
this.bezeichung=bezeichung;
this.einkaufspreis=einkaufspreis;
this.lagerzeit=lagerzeit;
}
public int berechneVerkaufspreis(){
return (int) ((einkaufspreis+einkaufspreis*HANDELSSPANNE)*(MWST+1));
}
public void anzeigen(){
System.out.println(artikelNr + "\t "+ bezeichung + "\t\t" + "EK" + einkaufspreis +"\t"+"VK"+ berechneVerkaufspreis() +"\t"+"Lagerzeit:" + lagerzeit +"Monaten");
}
}
package OldScotch;
public class Sonderposten extends Artikel{
double rabat;
public Sonderposten(String artikelNr, String bezeichung, double einkaufspreis, int lagerzeit){
super(artikelNr,bezeichung,einkaufspreis,lagerzeit);
if (lagerzeit>12){
rabat=0.3;
}
else{rabat=0.1;}
}
public void anzeigen(){
System.out.println(artikelNr + "\t "+ bezeichung + "\t\t" + "EK" + einkaufspreis +"\t"+"VK"+ super.berechneVerkaufspreis() +"\t"+"Lagerzeit:" + lagerzeit +"Monaten");
//wieso kann ich die oben stehende System.out.... nicht einfach durch super.anzeigen() ersetzen?
System.out.println("Sonderposten:");
System.out.println(artikelNr + "\t "+ bezeichung + "\t\t" + "EK" + einkaufspreis +"\t"+"VK"+ berechneVerkaufspreis() +"\t"+"Lagerzeit:" + lagerzeit +"Monaten");
System.out.println("VK<alt> " + super.berechneVerkaufspreis() + " Euro; "+"Rabatt "+(rabat*100)+"%");
}
public int berechneVerkaufspreis(){
return (int) ((int)((einkaufspreis+einkaufspreis*HANDELSSPANNE)*(MWST+1))*(1-rabat));
}
}
package OldScotch;
public class ArtikelTester {
public static void main(String[]arg){
Sonderposten oik=new Sonderposten("SC123-F", "DUFFY MALT Whisky",10, 3 );
Sonderposten piks=new Sonderposten("SC347-A", "GLEN MORANGIE MALT Whisky", 55,15);
oik.anzeigen();
piks.anzeigen();
}
}
Jetzt meine Frage:
Wieso kann ich nicht in der classe Sonderposten in der methode anzeigen die erste System.out.println nicht einfach durch super.anzeigen() ersetzen?
Ich habe mir es so vorgestellt, dass wenn ich super.anzeige() aufrufe, werden auch alle methoden der Superclasse aufgeruft(auch die berechneVerkaufspreis der Superclasse), stattdessen wird die methode berechneVerkaufspreis der Subclasse verwendet.
Warum?
Danke.