Vererbung Variable aus anderer Klasse nutzen

kixsa

Mitglied
Hallo, ich habe ein Problem mit dem Zugriff einer Variable aus einer anderen Klasse.

Ich habe eine Klasse FinanceOffice , in der ich mit einem Array 5 Personen erstelle.
Dazu gibt es eine weitere Klasse in der von den Personen die Lohnsteuer deren Einkommens berechnet wird.

Jetzt möchte ich in der Klasse FinanceOffice die Steuer der Personen mit der Methode calculateSumOfTaxes(Person[] personArray) addieren, um zu ermitteln wie hoch der Gesamtertrag von allen Personen ist, also muss ich dazu irgendwie auf die variable "tax" aus der Klasse Person zugreifen...

Es gibt auch noch die Klassen worker,banker,queen, welche von der klasse person erben, aber das ist für das problem ja nicht relevant.

Ich weiß halt nicht, wie ich auf das "tax" der einzelnen Personen in FinanceOffice zugreifen kann:

FinanceOffice
Java:
public class FinanceOffice {

	/**
	 * Constructor for objects of class FinanceOffice
	 */
	public FinanceOffice() {
		Person[] persons = new Person[5];

		//creates 5 persons
		Person joeUnemployed = new Person(6400);
		persons[0] = joeUnemployed;
		Worker suziHardworking = new Worker(36000);
		persons[1] = suziHardworking;
		Banker fredMoneymaker = new Banker(4000000);
		persons[2] = fredMoneymaker;
		Queen elisabeth = new Queen(1000000);
		persons[3] = elisabeth;
		Banker billyBadLuck = new Banker(500);
		persons[4] = billyBadLuck;

		System.out.println("Steuereinnahmen des Landes: "
				+ calculateSumOfTaxes(persons) + " Pfund");
	}

	/**
	 * Calculates the sum of the taxes of given persons.
	 * 
	 * @param personArray
	 *            some persons
	 * @return the sum of all the taxes of the persons
	 */
	public int calculateSumOfTaxes(Person[] personArray) {
		int taxSum = 0;

		return taxSum;
	}

Person
Java:
public class Person {

	protected int income;

	public Person(int income) {
		this.income = income;
	}

	public int calculateTaxableIncome() {
		return income;
	}

	public int calculateTax() {
		final int tax;
		tax = (int) Math.round(income * 0.25);
		return tax;

	}

}

Hoffe das stimmt erstmal so weit, und jemand kann mir bezüglich der Gesamtsumme berechnen helfen.
 
Hallo,

möglicherweise verstehe ich gerade das Problem falsch,
aber du kannst im der Methode calculateSumOfTaxes() so etwas schreiben:


Java:
int tax=personArray[i].calculateTax()


Eine andere Möglichkeit wäre tax als Attribut von Person zu speichern (sowie income).
Dann rufst du im Konstruktor von Person die calculatetax() Methode auf.
Zum Schluss definierst du noch eine Getter-Methode für tax und kannst da über diese auf das Attribut zugreifen.
 
Java:
    public class Person {
     
        protected int income;
        int tax;
     
        public Person(int income) {
            this.income = income;
            this.tax = tax = (int) Math.round(income * 0.25);
        }
     
        public int calculateTaxableIncome() {
            return income;
        }
        //Schreibe getter und setter
        pubic int getTax(){
         return tax;
        }
        public void setTax(int tax){
         this.tax = tax;
        }
}

Somit kannst du auf tax als Information aus dem Objekt Person zugreifen. 🙂

Da ist mir wohl wer zuvorgekommen 😀.
 
Zuletzt bearbeitet:
Danke euch, mit der Variante klappt es bereits:

Java:
int tax=personArray[i].calculateTax()

also kann ich mir die getter Methode sparen.
Ich scheitere öfters an solchen simplen Variablen und Methodenaufrufen -,-
 

Zurück
Oben