2009-12-23 4 views
0

정적 메서드에서 비 정적 메서드를 호출 할 (액세스 할 수 있습니까? 마찬가지로 정적 메서드가 있다면 예, 어떻게 ??정적 메서드에서 비 정적 메서드 호출

public static void method()  //like this is a static method 
{ 
    methodsec();  //from here I want to access non static method defined below 
} 

public void methodsec()  // non static method 
{ 

} 
+0

정확한 중복, http://stackoverflow.com/questions/1947533/triggering-a-non-static- class-from-a-static-class/1947541 # 1947541 –

+2

왜 이렇게해야합니까? 약간의 코드 냄새가 나는 것처럼 보입니다 –

+0

@Andrew Hare - 나는 그것이 중복이라는 것을 확신합니다. 그러나 그 질문은 아닙니다. 하나는 사건에 관한 것입니다. – Kobi

답변

5

예,하지만 당신은 그것을 통해 할 수있는 기준이 필요합니다

public static void StaticMethod()  
{ 
    someInstance.InstanceMethod(); 
} 

public void InstanceMethod() 
{ 
} 

당신은 당신이 메소드를 호출 할 경우에 대해 생각해야합니다. 인스턴스 메소드는 일반적으로 인스턴스의 상태를 사용하므로 메소드는 호출 된 인스턴스에 따라 다른 작업을 수행 할 수 있습니다.

+0

인스턴스는 ?? – Harikrishna

+0

인스턴스는 함수를 호출 할 객체입니다. 예 : 과일 사과 = 새 과일(); apple.BlowUp(); 사과가 인스턴스입니다 – RvdK

+0

@ 하리 크리 스나 : 그럼 어느 인스턴스에 * 전화를 걸고 싶습니까? 이것은 어떤 설명의 컨트롤이라고 가정하고, 화면에 두 개의 컨트롤이 있고 메소드가 컨트롤의 텍스트를 변경합니다 - 분명히 텍스트를 변경하려는 * 컨트롤 *을 말해야합니다. –

1

아니, 정확히 그렇게 부르는 것은 아닙니다. 비 정적 메소드를 호출하려면 클래스의 인스턴스가 필요하거나 정적이어야합니다.

대체 접근법은 singleton pattern을 사용하는 것이므로 코드 전체에서 사용할 수있는 클래스 인스턴스가 하나뿐이므로 정적 메서드를 사용할 필요가 없습니다. 그렇게하면 클래스의 모든 메서드가 서로 호출 할 수 있습니다. 이것이 실제로 귀하의 요구에 부합하는지 여부는 말할 것도 없지만 추가 정보없이 갈 방법이 될 수 있습니다.

관련 문제