2010-04-09 6 views
0

NetBeans에서 앱을 작성하고 있습니다. 두 개의 클래스 MyApp_View 및 MyApp_Functions 있습니다.두 클래스를 서로 선언하십시오.

는 MyApp_View 클래스는 내가
MyApp_View my_view = new MyApp_View(null);

내가 MyApp_Functions에서 MyApp_View의 공용 변수보기에서 기능의 공용 메소드에 액세스하려면,하지만이 MyApp_Functions에서이

public class MyApp_View extends FrameView { 
MyApp_Functions My_functions = new MyApp_Functions(); 

public MyApp_View(SingleFrameApplication app) { 
    super(app); 

처럼 시작 이것으로 성공하지 못했습니다.

이 것이 가능합니까? 그리고 어떻게?

편집 : 대답으로 판단하면 분명히하는 것이 가장 좋습니다.

MyApp_View가 MyApp_Functions에 선언 된 경우 또는 MyApp_View가 MyApp_View에 예상대로 작동합니다. 하지만 나는 다른 클래스의 공개 클래스에 액세스 할 수 없습니다. 나는 내가 선언 한 것에서 만 접근 할 수있다.

MyApp_View를 MyApp_Functions 및 MyApp_Functions에서 MyApp_View로 선언하려고하면 잘 컴파일됩니다. 하지만 시작시 null 예외 오류가 발생합니다.

다시. 더 쉽게 이해할 수 있을까요? 이게 가능합니까? 그리고 어떻게? 예를 들어, 단지 MyApp_Functions 클래스의 개체 My_functions에 대중 foo 변수에 액세스 할 My_functions.foo를 사용하여, 마찬가지로 그 객체의 공용 bar() 메소드를 호출 my_view.bar()를 사용하여 - 대중 멤버에 액세스

답변

1

MyApp_View my_view = new MyApp_View (null);

이렇게하면 MyApp_Function을 구성한 것과 다른 새로운 MyApp_View 개체가 만들어집니다. 당신이 원하는 것은 두 객체가 서로에 대한 참조를 갖도록하는 것입니다. 나는 보통 객체 중 하나의 생성자에 매개 변수를 사용하여이를 설정합니다.

class A { 
    private B b; 

    public A() { 
     this.b = new B(this); 
    } 
} 

class B { 
    private A a; 

    public B(A a) { 
     this.a = a; 
    } 
} 

지금 형 A의 객체

A.b을 통해 연관된 객체 B에 액세스 할 수 있으며, 객체 BB.a을 통해 연관된 객체 A에 액세스 할 수 있습니다 예를 들면 다음과 같습니다이다. 귀하의 예에서 AMyApp_View이고 BMyApp_Functions입니다.

0

은 간단합니다.

그러나 귀하의 문제는 객체 지향 사고에 대한보다 일반적인 문제로 의심됩니다. 소개 자바 서적을 가져 와서 작업 해보는 것이 좋습니다. OO 프로그래머가 좋은 방법으로 대체 할 수있는 대체 방법이 없습니다. 을 생각해보십시오.

+1

개인 권장 사항 : Kathy Sierra와 Bert Bates가 "Head First Java"라고 OO 용으로 – Dolph

+0

을 쓰면 SmallTalk 또는 Ruby 책을 권해드립니다. :)) –

2

하나에서 다른 참조를 전달해야합니다. 당신이 MyApp_View 뭔가에 액세스해야 할 때마다 다음 사용할 수있는 변수에 대한 참조를, '저장'고

MyApp_Functions My_functions = new MyApp_Functions(this); 

및 MyApp_functions에 적절한 생성자를 추가 : 가장 기본적인에서 그것은 당신의 두 번째 라인을 변경 invlove 것 .

궁극적으로 그러한 관계가 실제로 필요한지 물어보고 시스템을 제거하여 시스템을 다시 설계하려고합니다.

관련 문제