2017-02-14 3 views
0

Ich habe zwei separate Klassen, eine, wo ich tatsächlich die Berechnung der Fläche eines Quadrats wie das erste Bit unten, und eine, wo ich das Ergebnis, aber die eine ich zeige das Ergebnis geben mir ein Fehler, der sagt, dass es das "computeSquareArea" -Symbol nicht finden kann. Warum macht es das und überträgt nicht zwischen den Klassen?Verwenden von Variablen in verschiedenen Klassen

+1

Rufen Sie Ihre Funktion mit Objekten, die ich denke. – vk3105

+0

zeigen Sie Ihre gesamte Klasse. – msagala25

Antwort

1

Nicht statische Methoden gehören zur Instanz des Objekts, während statische Methoden zur Klasse gehören.

In Ihrem Code ist computeSquareArea() eine nicht statische Methode. Dies bedeutet, dass Sie sie aufrufen müssen, um eine Instanz der Klasse aufrufen zu können.

Wenn Sie die Methode aufrufen möchten, ohne zuerst eine Instanz zu benötigen, können Sie eine statische Methode verwenden . Um das Verfahren statisch zu machen, ändern public double computeSquareDistance() zu public static double computeSquareDistance()

Sie diese mehr über here.

+0

auch nach dem Hinzufügen der statischen IM mit dem gleichen Problem. Muss ich ein Objekt in meiner anderen Klasse konstruieren, um es in der ersten Klasse zu verwenden? –

+0

Nehmen wir an, 'computeSquareArea()' ist in einer Klasse namens Foo. Um die Methode von einer anderen Klasse aufzurufen, sollten Sie 'Foo.computeSquareArea()' aufrufen. Wenn dies für Sie nicht funktioniert, versuchen Sie den eigentlichen Code zu posten, damit wir Ihnen weiterhelfen können. – coolioasjulio

+0

Das Problem ist nicht wirklich statisch vs. nicht statisch. Sie müssen die Methode entsprechend aufrufen. Wenn es statisch ist, ist der geeignete Weg 'className.methodName()'. Wenn es nicht statisch ist, ist der geeignete Weg 'instanceRef.methodName()'. Wenn Sie einfach 'methodName()' aufrufen, muss die Methode in derselben Klasse definiert sein, in der der Aufruf erfolgt. –

1

lesen kann ich sehen kann, Ihre Methode computeSquareArea(double length) ist nicht statisch. Also ich denke, Sie müssen Intantiate die Klasse, die Ihre Methode computeSquareArea(double length) haben. Wie zum Beispiel, lassen Sie uns Ihre Klasse Name ist SomeClass.

SomeClass someClass = new SomeClass(); 
double sqArea = someClass.computeSquareArea(length); // This would be the method of your newly created Instance of SomeClass 
System.out.println("Area of the square is " + sqArea); 
Verwandte Themen