Hi Leute! Folgendes (kleines) Problem. Es soll ein kleines Steuerberechnungsprogramm geschrieben werden. Ich werde nicht weiter ins Detail gehen. Die Klasse "Bauer" erbt von "Einwohner". Die Klasse "Leibeigener" von "Bauer".
Einwohner<-----Bauer<-----Leibeigener.
In der Klasse Einwohner ist eine Methode getSteuer() die die Steuern des Einkommens berechnet. Andere Klassen wie "König" und "Adel" haben Sonderregelungen, weshalb ich lokal nochmal spezialisierte getSteuer() Methoden implementiert habe. Die Klasse "Bauer" hat keine Sonderregelung und kann die Standard-Methode getSteuer() von der Klasse "Einwohner" erben, die sieht wie folgt aus:
In einer Testklasse wird der Klasse Bauer in einem Objekt ein Einkommen von 20 zugewiesen, wodurch die Steuer also 2 sein müsste. Bei allen anderen Klassen funktioniert es, nur bei "Bauer" kommt immer 1 raus. Also ignoriert Eclipse die if-Abfrage und springt direkt in "return 1;". Weil würde Eclipse die if-Abfrage machen, würde es sehen, dass 2 > 1 ist und "steuer" zurückgeben und nicht 1. Liege ich richtig? Hat es was damit zu tun, dass "Bauer" Sub- und Superklasse gleichzeitig ist? Habe auch schon probiert die Methode direkt einzufügen in die Klasse "Bauer", gibt mir auch 1 zurück.
Gruß und hoffe auf eine hilfreiche Antwort
Einwohner<-----Bauer<-----Leibeigener.
In der Klasse Einwohner ist eine Methode getSteuer() die die Steuern des Einkommens berechnet. Andere Klassen wie "König" und "Adel" haben Sonderregelungen, weshalb ich lokal nochmal spezialisierte getSteuer() Methoden implementiert habe. Die Klasse "Bauer" hat keine Sonderregelung und kann die Standard-Methode getSteuer() von der Klasse "Einwohner" erben, die sieht wie folgt aus:
Java:
public int getSteuer(){
int steuer;
steuer = (getZuVersteuerndesEinkommen()/100)*10;
if(steuer>1){
return steuer;
}
return 1;
}
In einer Testklasse wird der Klasse Bauer in einem Objekt ein Einkommen von 20 zugewiesen, wodurch die Steuer also 2 sein müsste. Bei allen anderen Klassen funktioniert es, nur bei "Bauer" kommt immer 1 raus. Also ignoriert Eclipse die if-Abfrage und springt direkt in "return 1;". Weil würde Eclipse die if-Abfrage machen, würde es sehen, dass 2 > 1 ist und "steuer" zurückgeben und nicht 1. Liege ich richtig? Hat es was damit zu tun, dass "Bauer" Sub- und Superklasse gleichzeitig ist? Habe auch schon probiert die Methode direkt einzufügen in die Klasse "Bauer", gibt mir auch 1 zurück.
Gruß und hoffe auf eine hilfreiche Antwort