2014-11-07 2 views
1
Practice 
└─src 
    ├─main 
    │ └─java 
    │ ├─GridPrac.java 
    │ └─MyFrame.java 
    └─test 
    └─java 
     └─Test.java 

이것은 내 Java 프로젝트 구조입니다. (죄송합니다. 이미지를 업로드하는 데 충분한 평판이 없습니다. : D)Java가 공용이 아닌 사용자 정의 클래스 가져 오기

클래스를 MyFrame.java에서 Test.java로 가져오고 싶습니다.

는 MyFame.java에서 MyFrame이란 클래스는 공개 할 때 :

public class MyFrame{...} 

이클립스 오류 알림을 생성하지 않습니다. 그러나

, MyFame.java 아래 MyFrame을 클래스 공개 아니다

class MyFrame{...} 

Eclipse는 에러 통지를 생성한다.

동일한 Project 소스 폴더에서 다른 사용자 정의 패키지의 공용 클래스를 가져올 수 있습니까?

또는 같은 프로젝트의 다른 폴더에서 비공개 클래스를 어떻게 가져올 수 있습니까?

미리 감사드립니다.

:

+0

두 클래스가 모두 동일한 패키지 * 내에 있으면 아무 것도 가져올 필요가 없으므로 폴더 구조는 중요하지 않습니다. 오류 알림을 받으면 질문에 오류 메시지를 포함시켜야합니다. – Holger

답변

3

문제는 클래스가 모두 기본 패키지에 들어 있으므로 사용하지 않는 것이 좋습니다. Java는 또한 정상적인 방법으로 해당 패키지의 클래스에 액세스하는 것을 허용하지 않습니다. 자세한 내용은이 스레드 및 연결된 사양을 참조하십시오. How to import a class from default package

클래스가 공개되지 않은 경우 패키지 외부에있는 클래스에서 액세스 할 수 없으며 해당 클래스를 확장하지 않습니다. 그것은 언어의 일부이며 일식의 문제는 아닙니다.

Test에서 액세스하려면 두 패키지가 모두 다른 패키지에 있어야합니다. MyFrame은 공개되어야합니다. 귀하의 경우에 src/main/java은 관습에 충실하지 않는 한 패키지가 아니며, 그렇지 않다고 가정하면 어쨌든 다른 이름을 사용하게 될 것입니다.

0

"같은 프로젝트의 다른 폴더에서 비공개 클래스를 어떻게 가져올 수 있습니까?" 대답은 입니다.을 사용할 수 없습니다. Java에서 외부 클래스는 public 또는 default 중 하나 일 수 있습니다 (액세스 한정자 없음). 클래스에 기본 접근성이 있으면 package-private이라고합니다. 패키지 공용 클래스는 동일한 패키지 내의 다른 클래스에서만 볼 수 있습니다. 예 :

package foo; 

public class PublicClass {...} 

누구나 공개 클래스에 액세스 할 수 있습니다. 그러나

package bar; 

class PackagePrivateClass {...} 

bar 폴더 (또는 패키지) 내의 클래스를 통해서만 액세스 할 수 있습니다. 따라서 PublicClass은 다른 패키지에 있으므로 PackagePrivateClass을 가져올 수 없습니다.

질문에 대한 답변이 있습니까?

0

Java 클래스/필드/메소드의 기본 설정 (public으로 정의하지 않은 경우)은 'package-private'입니다. 이는 동일한 패키지에있는 클래스 만 액세스 할 수 있음을 의미합니다.

동일한 패키지에있는 경우 두 클래스는 가져올 필요없이 항상 서로를 볼 수 있습니다. 그렇지 않으면 클래스는 패키지 외부의 다른 클래스에서 액세스 할 수 있도록 공용이어야합니다.이 경우 가져 오기를 사용해야합니다.

관련 문제