Methode aus anderer Klasse verwenden

Status
Nicht offen für weitere Antworten.

bjcoon

Aktives Mitglied
Folgender Code:

Code:
public class Berechnungen {
	public static void main (String[]args) {
		
           final double pi = Math.PI;
	        int radius = 10;

	berechneUmfang(radius,pi);
	berechneFlaeche(radius,pi);

	}

	static double berechneUmfang(int radius, double pi) {
		
      double umfang;
		umfang = 2*pi*radius;
		System.out.println("Der Umfang des Kreises mit " + radius + "LE als Radius lautet: " + umfang);
		return umfang;
	}

	static double berechneFlaeche(int radius, double pi) {

		double flaeche;
		flaeche = Math.pow(radius,2)*pi;
		System.out.println("Die Fläche des Kreises mit " + radius + "LE als Radius lautet: " + flaeche);
		return flaeche;
	}
}

Diese Klasse tut eigentlich nichts Simpleres als auf eine Methode zugreifen.
Wie kann ich mit einer weiteren Klasse namens TestBerechne.java auf die beiden unten deklarierten Methoden berechneUmfang() und berechneFlaeche() zugreifen?

Vielen Dank
 
deine Methoden sind static, dass heisst, es wird kein Objekt benötigt, um darauf zuzugreifen... Bist du dir das bewusst? Falls ja, und du dir das überlegt hast so, dann kannst du so drauf zugreifen:

Berechnungen.berechneUmfang(radius,pi);

Falls nicht, entferne die static-deklarationen und erzeuge eine Instanz der Klasse

Code:
Berechnungen b = new Berechnungen();
b.berechneUmfang(radius,pi);
 
indem du die Operationen aufrufst:
double d = Berechnungen.berechneFlaeche(3,4);

evtl. musst du die Operationen noch public deklarieren
 
Code:
public class TestBerechnen {
	public static void main (String[] args) {

	Berechnungen.berechneUmfang(10,Math.PI);
	Berechnungen.berechneFlaeche(10,Math.PI);


	}
}

Meine Klasse TestBerechne.java greift nun erfolgreich auf die Methoden der Klasse Berechnungen.java zu?
Wie kann ich die Variablen radius und pi aus der Klasse Berechnungen so deklarieren, dass ich in der Klasse Testberechne auch darauf zugreifen kann?
Wie ihr seht gebe ich dem Methodenzugriff berechneUmfang und berechneFlaeche jeweile fixe Werte und keine Variablen mit auf den Weg?

Danke
 
Lies den lezten Satz von SlaterBs letztem Post 😉
Wende das auf die Konstanten an.

Nachrag: Quatsch, geht nicht, da es lokale Variablen in der main Methode sind.
Mach Instanzvariablen draus und schreibe Getter und Setter dafür, auch brauchst du pro Programm nur eine einzige main Methode(falls überhaupt).
 
Die Frage ist, ist es auch ohne Erzeugung einer Instanz der Klasse möglich?

Auf die Methoden kann ich ja zugreifen, aber die Variblen radius und pi bleiben unbekannt? Wenn ich die Variablen radius und pi in der Klasse Berechnungen.java als public deklarieren will, dann meldet der Compiler einen Fehler!
Wie kann ich auf die lokalen Variablen in der Klasse Berechnungen.java "radius" und "pi" auch in der Klasse TestBerechne.java zugreifen?

Danke
 
> dann meldet der Compiler einen Fehler!

Folge-Alternative A: für den Rest deines Lebens keine Variablen mehr deklarieren, geht ja nicht

Folge-Alternative B: Fehlermeldung und Code hier hinschreiben, dann kann es korrigiert werden

Folge-Alternative C: nix tun, nur sich über Java beschweren..

------------

> auf die lokalen Variablen in der Klasse Berechnungen

es gibt keine lokalen Variablen in einer Klasse,

definiere statische Variablen oder übergib sie als Paramter an Operationen
 
Also nochmal zusammenfassend:

Berechungen.java

Code:
public class Berechnungen {

	static final double pi = Math.PI;
	static int radius = 10;

	public static void main (String[]args) {

	berechneUmfang(radius,pi);
	berechneFlaeche(radius,pi);

	}

	public static double berechneUmfang(int radius, double pi) {
		double umfang;
		umfang = 2*pi*radius;
		System.out.println("Der Umfang des Kreises mit " + radius + "LE als Radius lautet: " + umfang);
		return umfang;
	}

	public static double berechneFlaeche(int radius, double pi) {
		double flaeche;
		flaeche = Math.pow(radius,2)*pi;
		System.out.println("Die Fläche des Kreises mit " + radius + "LE als Radius lautet: " + flaeche);
		return flaeche;
	}
}

TestBerechne.java

Code:
public class TestBerechnen {
	public static void main (String[] args) {

	Berechnungen b = new Berechnungen();

	b.berechneUmfang(radius,pi);
	b.berechneFlaeche(10,Math.PI);

	}
}

Mit dem Befehl b.berechneUmfang(radius,pi) greife ich theoretischerweise auf die Methode berechneUmfang(); aus der Klasse Berechnungen.java zu. Das funktioniert auch, allerdings sind die Variablen "radius" und "pi" nicht bekannt bzw. wird mir der Fehler 'cannot resolve symbol' geliefert.
Mit dem Befehl b.berechneFlaeche(10,Math.PI) funktionerts. Ist ja klar. Also?

Die Deklaration als public static Variable funktioniert nicht.

Was kann ich tun, dass die Variablen überall sichtbar sind, ohne zwingend eine Instanz der Klasse erzeugen zu müssen?

Danke
 
Prusik hat gesagt.:
Falls nicht, entferne die static-deklarationen und erzeuge eine Instanz der Klasse

Code:
Berechnungen b = new Berechnungen();
b.berechneUmfang(radius,pi);

Dieser Hinweis ist richtig, allerdings kann ich wie gesagt nicht auf die in Berechnungen.java deklarierten Variablen radius und pi zugreifen? Hilfe!!
 
> Die Deklaration als public static Variable funktioniert nicht.

tolle Fehlerbeschreibung, ich sehe du hast gelernt,
lies dir nur aus Spass trotzdem noch mal Folge-Alternative A-C durch

-----------

> b.berechneUmfang(radius,pi)

berechneUmfang ist eine statische Operation, die solltes du direkt mit
Berechnungen.berechneUmfang(radius,pi);
aufrufen, das Objekt hat hier keinen Sinn

---------

radius und pi sind selbstverständlich nicht bekannt, was sollte passieren, wenn sie in einer andere Klasse definiert sind,
was wenn in verschiedenen Klassen mehrmals definiert?

soll Java hier schauen, welche Klasse b hat und danach dort die Variablen suchen?
nein, du musst sie schon direkt eindeutig beschreiben:

Berechnungen.berechneUmfang(Berechnungen.radius,Berechnungen.pi);


> Was kann ich tun, dass die Variablen überall sichtbar sind, ohne zwingend eine Instanz der Klasse erzeugen zu müssen?

public und static,

static hast du schon, du brauchst kein Objekt
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben