2013-12-22 2 views
0

나는 static을 알고 있기 때문에 존재해야하는 개체의 인스턴스없이 정적 메서드를 호출 할 수 있습니다. 따라서 객체를 만들고 그 객체에서 메서드를 호출하는 대신 클래스의 메서드를 호출하면됩니다.Java의 정적 메서드에 대한 혼동

이제 Main 클래스에는 다음과 같은 개체가 있습니다 : public ScribbleCanvas myCanvas;. ScribbleCanvas 클래스에서 나는 Main 클래스의 메소드에 액세스하려고합니다.

Main (이미 ScribbleCanvas) 인스턴스가 있으므로,이 클래스의 비 정적 메서드에 어떻게 액세스 할 수 있습니까? 아니면 더 나은 질문 - 내 추론의 오류는 어디에 있습니까?

+1

이미 Main 클래스의 인스턴스가 있습니까? 코드는 어디에 있습니까? 너 뭐 해봤 니? –

+0

자세한 내용을 알려 주실 수 있습니까? 왜 그 클래스에서 Main 메서드를 호출해야합니까? –

+0

'ScribbleCanvas'는 클래스의 이름입니다. 그게 인스턴스의 존재와 어떤 관련이 있습니까? –

답변

1

매개 변수를 Main의 매개 변수로 사용하는 ScribbleCanvas에 대한 생성자 나 설정자가있을 수 있습니다.

ScribbleCanvas sc = new ScribbleCanvas(this); 

또는

sc.setMainClass(this); 

그리고 그와

, 당신은 단지 매개 변수에 필드를 참조합니다.

1

Main 인스턴스를 myCanvas의 구성원으로 설정하여 사용할 수 있습니다.

1

아래 코드는 어떻게해야하는지 설명합니다. testInstanceMethod은 Main 클래스의 인스턴스 메소드에 대한 예제 인 으로 간주됩니다. 이 방법을 사용하면 직접 클래스 이름을 넣어 Main.testStaticMethod()는 방법이 아니라 액세스 제공과 같은 DOT 연산자를 사용하여 호출 할 수있는 정적 메소드를 호출하는 경우도

public class ScribbleCanvas{ 

private Main mainObject = null; 


public ScribbleCanvas(){ 

this.mainObject = new Main(); 
//Call instance method in mainObject (member instance) 
this.mainObject.testInstanceMethod(); 
} 

public void setMainObject(Main arg){ 
this.mainObject = arg; 
} 

public Main getMainObject(){ 
return this.mainObject; 
} 

} 

으로 접근 할 수 있어야

면책 조항 : 시험하지 않음/컴파일

나는 당신의 질문을 이해하면
1

당신이 원하는 :

  • Main 클래스의 인스턴스를 가지고,하자 캘리포니아 그것 myMain.
  • 은 인스턴스는 ScribbleCanvas 예 (myCanvas) myMain 내 방법에 액세스 할 수에서
  • myCanvas라는 ScribbleCanvas 클래스의 인스턴스를해야합니다.이 작업을 수행하기 위해 당신이 할 수에서

:

  • ScribbleCanvas 내 타입 Main의 멤버를 선언는
  • callingMainScribbleCanvas
  • 의 생성자를 입력 Main (예를 들어 paramMain)의 매개 변수를 포함 말
  • 생성자에서 callingMainparamMain을 저장하십시오.
  • 보낸 사람 : Main, 코드 내에서 생성자
  • this 전달, 당신은 callingMain.method()

를 참조 할 수 있습니다이 도움이됩니까?

관련 문제