2017-02-14 1 views
0

두 개의 별도 클래스가 있습니다. 하나는 아래의 첫 번째 비트와 같은 사각형 영역 계산을 실제로하고, 하나는 결과를 표시하지만 하나는 결과를 표시하는 것입니다. "computeSquareArea"심볼을 찾을 수 없다는 오류가 나옵니다. 왜 그렇게하고 클래스간에 전송하지?다른 클래스의 변수 사용

public double computeSquareArea(double length) 
{ 
    return length * length; 
} 


double sqArea = computeSquareArea(length); 
System.out.println("Area of the square is " + sqArea); 
+1

개체를 사용하여 함수를 호출하십시오. – vk3105

+0

전체 수업을 보여줍니다. – msagala25

답변

1

비 정적 메서드는 개체의 인스턴스에 속하며 정적 메서드는 클래스에 속합니다.

코드에서 computeSquareArea()은 비 정적 방법입니다. 즉, 호출하려면 인스턴스가 속한 클래스의 인스턴스에서 호출해야합니다.

인스턴스를 먼저 요구하지 않고 메서드를 호출하려면 정적 메서드를 사용할 수 있습니다 . 이 방법은 정적 만들기 위해, 내가 볼 수 있듯이 당신이 here.

+0

동일한 문제가있는 정적 메신저를 추가 한 후에도 첫 번째 클래스에서 사용하려면 다른 클래스의 객체를 만들어야합니까? –

+0

'computeSquareArea()'가 Foo라는 클래스에 있다고 가정 해 보겠습니다. 다른 클래스의 메소드를 호출하려면'Foo.computeSquareArea()'를 호출해야합니다. 이 방법이 효과가 없다면 실제 코드를 게시하여 도움을 받으십시오. – coolioasjulio

+0

문제는 실제로 정적이 아닌 정적이 아닙니다. 메서드를 적절하게 호출해야합니다. 정적이라면 적절한 방법은'className.methodName()'입니다. 정적이 아니라면 적절한 방법은'instanceRef.methodName()'입니다. 간단하게'methodName()'을 호출하면, 메소드는 호출이 일어나는 클래스와 같은 클래스에서 정의되어야한다. –

1

에 대한 자세한 내용을보실 수 있습니다 public double computeSquareDistance()

public static double computeSquareDistance()에 변경, 당신의 방법 computeSquareArea(double length) 정적 없습니다. 그래서 Intantiate 님의 방법이있는 클래스 computeSquareArea(double length)이 필요합니다. 예와 마찬가지로 클래스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);