programing

Java 파일에는 여러 클래스를 포함할 수 있습니까?

goodjava 2022. 11. 11. 23:35

Java 파일에는 여러 클래스를 포함할 수 있습니까?

Java 파일에 두 개 이상의 클래스를 갖는 목적은 무엇입니까? 저는 Java에 익숙하지 않습니다.

편집: 퍼블릭 클래스 내에 내부 클래스를 만드는 것으로 달성할 수 있는 거죠?

네, 할 수 있어요.단, 퍼블릭 탑레벨 클래스는 1개당 1개만 존재할 수 있습니다..java파일 및 공개 최상위 클래스는 소스 파일과 이름이 같아야 합니다.

하나의 소스 파일에 여러 클래스를 포함하는 목적은 관련 지원 기능(내부 데이터 구조, 지원 클래스 등)을 주요 공개 클래스와 함께 번들하는 것입니다.이렇게 하지 않아도 상관없습니다.코드의 가독성(또는 가독성)에만 영향이 있습니다.

공용 클래스를 구현하려면 해당 클래스와 이름이 같은 파일에 구현해야 합니다.하나의 파일에 하나의 퍼블릭클래스와 일부 프라이빗클래스를 포함할 수 있습니다.이것은 클래스가 퍼블릭클래스에 의해서만 내부적으로 사용되는 경우에 편리합니다.또한 퍼블릭 클래스는 내부 클래스도 포함할 수 있습니다.

하나의 소스 파일에 하나 이상의 개인 클래스가 있는 것은 괜찮지만, 내부 클래스와 익명 클래스를 사용하는 것이 더 읽기 쉽다고 생각합니다.예를 들어 어나니머스 클래스를 사용하여 퍼블릭클래스 내에서 Comparator 클래스를 정의할 수 있습니다.

  public static Comparator MyComparator = new Comparator() {
    public int compare(Object obj, Object anotherObj) {

    }
  };

일반적으로 Comparator 클래스는 공개하기 위해 별도의 파일이 필요합니다.이렇게 하면 사용하는 클래스에 번들됩니다.

그래, 얼마든지!

단, 모든 파일에 하나의 "공용" 클래스만 있습니다.

.java 파일은 컴파일 유닛이라고 불립니다.각 컴파일 유닛에는 임의의 수의 최상위 클래스 및 인터페이스를 포함할 수 있습니다.공개 최상위 유형이 없는 경우 컴파일 유닛에 임의의 이름을 붙일 수 있습니다.

//Multiple.java
//preceding package and import statements

class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...

컴파일 유닛에 포함할 수 있는 퍼블릭클래스/인터페이스는 1개뿐입니다.C.U.는 이 공개 최상위 유형과 정확히 일치해야 합니다.

//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces

주요 방법에 대한 중요 사항 - 파트 1

파트 2

(제2부에서 다루는 클래스의 수와 그 액세스 레벨에 관한 포인트)

일반적으로 파일당 하나의 클래스가 있어야 합니다.이러한 방식으로 구성하면 클래스를 검색할 때 해당 이름의 파일만 검색하면 됩니다.

예외는 클래스가 1개 이상의 작은 도우미 클래스를 사용하여 최적으로 구현되는 경우입니다.일반적으로 이러한 클래스가 같은 파일에 존재할 때 코드를 가장 쉽게 찾을 수 있습니다.예를 들어 메서드 호출 간에 일부 데이터를 전달하려면 작은 '태플' 래퍼 클래스가 필요할 수 있습니다.다른 예로는 Runnable 또는 Callable을 구현하는 '태스크' 클래스가 있습니다.너무 작기 때문에 부모 클래스와 조합하여 작성 및 호출하는 것이 가장 좋습니다.

예. .java 파일 내에 여러 클래스를 포함할 수 있습니다.그들 중 한 명은 공개될 수 있다.나머지는 패키지 전용입니다.그것들은 비공개이거나 보호될 수 없습니다.공용인 경우 파일에는 해당 클래스의 이름이 있어야 합니다.그 이외의 경우는, 그 파일의 이름으로 무엇이든 지정할 수 있습니다.

하나의 파일 내에 여러 개의 클래스가 있다는 것은 이러한 클래스가 같은 패키지에 포함되어 있음을 의미합니다.따라서 해당 패키지 내에 있지만 파일에 없는 다른 클래스도 이러한 클래스를 사용할 수 있습니다.또한 패키지를 Import할 때 클래스 Import에서도 사용할 수 있습니다.

자세한 내용은 이쪽의 블로그 투고를 참조해 주세요.

예, 둘 이상의 공용 클래스를 만들 수 있지만 중첩된 클래스여야 합니다.

public class first {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }

    public class demo1
    {

        public class demo2
        {

        }
    }
}

어나니머스 내부 클래스 외에 퍼블릭인터페이스를 실장하는 프라이빗 내부 클래스도 사용할 수 있습니다( 기사를 참조).외부 클래스는 내부 클래스의 모든 개인 필드 및 메서드에 액세스할 수 있습니다.

이를 통해 모델 및 뷰와 같이 두 개의 긴밀하게 결합된 클래스를 두 개 모두 구현하지 않고도 만들 수 있습니다.또 다른 예로는 컬렉션과 그 반복기가 있습니다.

, 200%입니다.

예를 들어:

class A {
 void methodDeclaration() { System.out.println("!!!"); }
 }
 class B {
 public static void main(String[] args) {
new A().methodDeclaration();
    }
 }

네, 가능합니다만, Java 컴파일러가 를 작성하기 때문에 패키지 내에는 퍼블릭클래스가 1개만 존재할 수 있습니다.Public 클래스 이름과 같은 이름의 클래스 파일.따라서 이 파일들이 1개 이상의 퍼블릭클래스일 경우 클래스 파일명을 컴파일러로 선택하는 것은 어렵습니다.

네! .java 파일에는 퍼블릭클래스를 1개만 포함할 수 있습니다.

이 두 클래스를 공개하려면 두 개의 .java 파일(A.java 및 B.java)에 저장해야 합니다.

네, 할 수 있어요.단, 퍼블릭클래스는 소스 파일과 이름이 같아야 하므로 .java 파일당 퍼블릭클래스는 1개뿐입니다.

다양...이러한 예로는 익명 클래스가 있습니다(이벤트 리스너 등을 사용하면 이러한 클래스가 많이 발생합니다).

"NON-STATIC 탑레벨 퍼블릭클래스는 .java 파일마다 1개만 있을 수 있습니다"라고 해야 합니다.아니니?

싱글톤을 구현하고 싶은 경우, 싱글톤을 구현하는 방법 중 하나는 프라이빗 스태틱클래스를 퍼블릭클래스 안에 네스트하는 것입니다.그런 다음 내부 개인 클래스는 개인 인스턴스에 액세스하는 공용 메서드가 호출될 때만 인스턴스화됩니다.

이 위키 기사를 보세요

https://en.wikipedia.org/wiki/Singleton_pattern

그 컨셉은 숙고하는데 시간이 좀 걸린다.

.java 파일에는 파일과 이름이 같은 공용 최상위 클래스가 하나만 있을 수 있지만 모든 사용자에게 내보내고 외부 클래스의 필드/메서드에 액세스할 수 있는 공용 내부 클래스가 여러 개 있을 수 있습니다. 예를 들어 다음과 같습니다.AlertDialog.AlertDialog의 Builder('public static'에 의해 변경됨) ('public'에 의해 수정됨)

네. 한 번에 여러 개의 클래스를 가질 수 있습니다.Java 파일. 단, 그 중 하나를 Public으로 하고 .java 파일을 Public 클래스의 이름과 같은 이름으로 저장합니다..java 파일을 컴파일하면 .java 파일에 정의된 각 클래스에 대해 별도의 .class 파일이 생성됩니다.

이와는 별도로 .java 파일에 여러 클래스를 정의하는 방법은 너무 많습니다.

  1. 내부 클래스 개념을 사용합니다.
  2. [ Concept of Anonymous Classes ]를 사용합니다.

파일에는 1개의 퍼블릭클래스 최상위 클래스만 있을 수 있습니다.해당 공용 클래스의 클래스 이름은 파일 이름이어야 합니다.그것은 많은 공공 내부 계층을 가질 수 있다.

하나의 파일에 여러 개의 클래스를 포함할 수 있습니다.파일의 다양한 클래스 표시 수준에 대한 제한은 다음과 같습니다.

최상위 클래스:
퍼블릭 클래스 1
0 프라이빗 클래스
임의의 수의 디폴트클래스

내부 클래스:
가시성이 있는 임의의 수의 내부 클래스(기본값, 개인, 보호됨, 공용)

제가 틀렸다면 정정해 주세요.

언급URL : https://stackoverflow.com/questions/968347/can-a-java-file-have-more-than-one-class