2014-12-23 3 views
1

동일한 .java 파일에 두 개의 클래스에 문제가 있습니다. 이 상황이다 :동일한 파일의 두 클래스

package pak1; 

public class Example1 { 

//some things`enter code here` 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
    } 
} 

class Example2 { 
//some things 
} 

내 질문은 : (가능하다면) 어떻게 다른 패키지에 예 2의 인스턴스를 수 있습니까?

  • 이동 두 번째 클래스 (권장) 다른 파일에
  • 수식 static를 추가하고 첫 번째 (중첩 클래스)에 두 번째 클래스를 넣어
+0

하나의 공개 클라세가 파일에서 가능합니다 .java – user3714257

+0

그 클래스에 대해 고유 한 파일을 만듭니다. 다른 클래스에서 액세스해야하는 경우 두 개 이상의 클래스를 하나의 파일에 저장해야하는 이유는 무엇입니까? – Tom

+0

스탠드가 그렇듯이? 당신은 할 수 없습니다. 그런 이유로 형제 클래스를 같은 파일에 추가하지 않는 것이 그 이유입니다. –

답변

13

두 가지 옵션이 있습니다 개체를 인스턴스화 할 위치에 따라 다릅니다.

예제 1 클래스는 public이므로 아무 곳에서나 해당 클래스의 인스턴스를 만들 수 있습니다. 그러나 Example2는 default의 액세스 수준을 가지고 있습니다. 그래서 당신은 당신의 pak1 패키지 내에서 그 클래스에서 인스턴스를 생성 할 수 있습니다 만

+0

좋습니다. +1. . . . –

+0

이클립스는'클래스 Example2에 대한 잘못된 수정 자; 오직 공개, 추상 및 최종 허용됩니다 ' – yunandtidus

+0

방금 ​​의견을 추가했지만 어쨌든 다른 파일을 사용해야합니다. – kelunik

2

:

0

공용 static 여기에 키가되어 추가,하지만 당신은 예 1

public class Example1 { 

    // some things`enter code here` 
    public static void main(String[] args) { 

    } 

    public static class Example2 { 
     // some things 
    } 
} 

그리고 다른 곳에서 예 2 클래스를 이동해야합니다 : 다른 패키지에서 액세스해야하는 파일에 하나 이상의 class 있어야하는 경우

new Example1 .Example2(); 
+0

이 질문은 내부 클래스가 아니라고 생각합니다 –

0

, 당신은 항상 둥지 그것을 할 수 있습니다.

public class Example1 { 
    public class Example2 { 

    } 
} 

그런 다음에 액세스 :

new Example1().new Example2() 

또는 다른 파일로 이동합니다. 아니면 확인하십시오 static

0

나는 완전한 자격을 갖춘 이름을 시도해 볼 수 있다고 생각합니다. Like :

Blah blah = new other.package.Blah(); 
+0

그건 작동하지 않습니다. –

관련 문제