Funktion eriner Klasse in einer anderen Klasse aufrufen

Padawan

Erfahrenes Mitglied
Hallo zusammen,

ich wollte in einer Klasse, den Rückgabewert einer Funktion verwenden, die wiederum in einer anderen Klasse ist. Bei Variablen ist es zwar klar, wie funktioniert es bei funktionen?

Hier mein Code:

Die Klasse in der die Funktion ist:
Java:
package Testklassen;

public class S_Feuchtigkeit {
	//Interne Klassenvariablen
		private int fB, fL, fA, fzu;
		
		//vollständiger Konstruktor
		public S_Feuchtigkeit(int feuchteBoden, int feuchteLuft, int feuchteAussen, int fzufuhr){
			fB = feuchteBoden;
			fL = feuchteLuft;
			fA = feuchteAussen;
			fzu = fzufuhr;
		}
		
		public int feuchteBoden(){
			if(fB > 100){
			    return fB;
			}else{
				return 0;
			}
		}
		
		public int feuchteLuft(){
			if(fB > 100){
			    return fL;
			}else{
				return 0;
			}
		}
		
		public int feuchteAussen(){
			if(fB > 100){
			    return fA;
			}else{
				return 0;
			}
		}
		public int feuchteZufuhr(){
			    return fzu;
		}
}

Die Klasse in der die Funktion verwendet wird.
Java:
package Testklassen;

public class A_Feuchtigkeit {
	public int wasserdüsse(){
		return S_Temperatur.feuchteBoden()+S_Temperatur.feuchteZufuhr();
	}
}


Grüße
Padawan
 
Zuletzt bearbeitet von einem Moderator:

ComFreek

Mod | @comfreek
Moderator
Hallo Padawan,

wo ist denn genau dein Problem?

Es werden die Rückgabewerte von feuchteBoden() und feuchteZufuhr() addiert und wiederum zurückgegeben.


PS: Ich würde keine Umlaute in Namen verwenden!
 

Padawan

Erfahrenes Mitglied
Hi,
die Sache ist die, das ich bei Eclipse die Fehlermeldung bekomme, dass die Funktion in der Klasse nicht vorhanden sein soll.
 

ComFreek

Mod | @comfreek
Moderator
In welcher Datei und Zeile denn?

Was ist denn S_Temperatur bei dir? Das müsste ein Objekt vom Typ S_Feuchtigkeit sein.
 

melmager

Erfahrenes Mitglied
Mir fehlt ein Constructor für die Classe S_Temperatur

Code:
package Testklassen;
 
public class A_Feuchtigkeit {
   S_Temperatur temp = new S_Temperatur(40,30,60,80);
    public int wasserdüsse(){
        return temp.feuchteBoden()+temp.feuchteZufuhr();
    }
}

oder
Code:
public class A_Feuchtigkeit {
   
    public int wasserdüsse(S_Temperatur temp){
        return temp.feuchteBoden()+temp.feuchteZufuhr();
    }
}
 
Zuletzt bearbeitet:

youza

Erfahrenes Mitglied
Deien erste Klasse hab ich mal ganz normal gelassen und nur die zweite Angepasst:

Java:
public class A_Feuchtigkeit {
    public int wasserduesse(S_Feuchtigkeit s_feucht){
    	
        return s_feucht.feuchteBoden()+s_feucht.feuchteZufuhr();
    }
}

wasserdüsse returnt jetzt halt den aufsummierten Wert von feuchteBoden und feuchteZufuhr.

Java:
public class start {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		S_Feuchtigkeit s_feucht = new S_Feuchtigkeit(10, 20, 30, 40);
		A_Feuchtigkeit af = new A_Feuchtigkeit();
		System.out.println(af.wasserduesse(s_feucht));
	}

}

Allerdings wenn du da wirklich mit S_Feuchtigkeit rechnen willst solltest du die funktion wasserduesse auch direkt in dem Objekt S_Feuchtigkeit belassen.
 
Zuletzt bearbeitet:

j2se

Erfahrenes Mitglied
Paketnamen werden i.d.R. klein geschrieben und/oder mit Punkte getrennt.

Wenn man eine Methode aus einer anderen Klasse verwendet will, benötigt man zuerst eine Referenz der Klasse (siehe Lösung von youza), ausser die Methode ist mit static deklariert.