2013-11-25 4 views
0

내가 누구의 기본 코드는 다음과 같이 프로그램을 만들고있어 :자바 : 동일한 클래스의 다른 메소드에서 클래스의 메소드를 호출하는 방법은 무엇입니까?

공용 클래스 StatisticalList는 ArrayList에 나는 두 가지 방법, getMinimumValue 및 getMaximumValue을 구현 한이에서 {

public double getMinimumValue() {...} 

    public double getMaximumValue() {...} 

    public double range(){ 

      double range = StatisticalList.getMaximumValue() - StatisticalList.getMinimumValue(); 

      return range; 
} 

을 확장합니다. 다음은 getRange 메소드를 구현하려고한다. 계산을 다시하지 않고 get__Value() 메소드를 호출하는 것이 쉽습니다.

그러나이 메서드는 ArrayList 유형에 대해 maxValue() 메서드의 정의가 정의되지 않았습니다. 내 프로그램에서 다른 방법으로 여러 번 메서드를 사용해야하는이 유형의 계산을 수행하고 싶습니다. 어떻게 작동 시키나요?

+0

방법이 정적이 아니므로 직접 호출 할 수 있습니다. 'getMaximumValue()' –

답변

3

StatisticalList에서 정적 메서드 호출로 getMaximumValue() 및 getMinimumValue()를 호출하고 있습니다.

double range = getMaximumValue() - getMinimumValue() 

당신이 찾고있는 것을 얻어야합니다.

0

기본적으로 구문 StatisticalList.getMaximumValue()은 정적 메서드를 호출하기위한 것입니다.

그리고 호출하려는 메소드는 instance 메소드입니다. 당신은 같은 클래스

double range = getMaximumValue() - getMinimumValue(); 

에서 그들을 호출 할 경우

그래서, 당신은 당신이 referenceStatisticalList

StatisticalList s = new StatisticalList(); 
double range = s.getMaximumValue() - s.getMinimumValue(); 
1

방법의 내 정의가 필요 어디 다른 일부를 사용하려는 경우 클래스는이 클래스의 모든 곳에서 액세스 할 수 있습니다. 또한 "공용"액세스 한정자를 사용 했으므로 패키지의 다른 클래스에서 메서드에 액세스 할 수 있습니다. 그러나 다른 패키지의 클래스에서 액세스하려면 해당 클래스를 가져와야합니다. 액세스 수정 자 here에 대한 here 이상의 문서를 참조하십시오.

그리고 당신은 또한 당신의 범위() 메소드를 단순화 수 : 간단히 말해서

public double range() { 
    return (getMaximumValue() - getMinimumValue()); 
} 
1

을 :

double range = getMaximumValue() - getMinimumValue(); 

를하지만의 조금을 설명 할 수 있습니다. 먼저이 코드가 어떻게 컴파일되는지 잘 모르겠습니다. "classname.methodname"형식의 메서드 호출은 정적 메서드이므로 StatisticalList.getMaximumValue()을 호출하면 Java 컴파일러에서 정적 메서드를 볼 것으로 예상합니다.
그리고 나는 네가 그것을 원한다고 생각한다. 이 ArrayList의 값 중에서 최대 값을 찾길 원할 것입니다. 따라서 "this"객체에서이 메소드를 호출해야합니다. 다음과 같이 간단하게이 라인에서 2 × StatisticalList.을 제거하고 있습니다 또한

double range = getMaximumValue() - getMinimumValue(); 

당신은 또한 당신이 get__Value() 메소드를 구현하는 방법을주의해야합니다. 컬렉션은 ArrayList으로 확장되므로 모든 종류의 개체를 포함 할 수있는 기본적으로 ArrayList<Object> 입니다. 뿐만 아니라 숫자. 은 아마 훨씬 더 나을

public class StatisticalList extends ArrayList<Double> { 

에 클래스 정의를 변경.

시험해보십시오.

관련 문제