[Java 객체] 소스파일과 클래스명

JUNHO YEOM·2022년 12월 19일
0

Java 객체

목록 보기
2/3

소스파일과 클래스명

자바에서 대부분은 하나의 소스파일에 하나의 클래스가 들어갑니다.
예를 들면 다음과 같습니다.

예제 1

// Hello.java
public class Hello {
	public static void main(String[] args) {
    	// 소스 코드
    }
}

하나의 파일에 여러개의 클래스를 선언할 때

소스파일에서 중심이 되는 클래스public class입니다.
public class가 있는 경우 소스파일의 이름은 반드시 public class의 이름과 일치해야 합니다.
예제 1번을 다시 한번 보겠습니다.
Hello.java라는 소스파일 이름과, public class의 이름이 같은것을 알 수 있습니다.

예제 1

// Hello.java
public class Hello {
	public static void main(String[] args) {
    	// 소스 코드
    }
}

하나의 소스파일에서 여러개의 소스 클래스를 선언해보자

먼저 하나의 소스파일에 둘 이상의 public class는 존재할 수 없다는 것을 기억합시다.
그리고, public class의 이름이 소스파일의 이름과 일치하면 됩니다.
public class가 없는 경우도 있습니다. 이 경우에는 소스파일의 이름이 클래스 이름과 달라도 문제가 되지 않습니다.

예제 2 - 하나의 소스파일에서 여러개의 public class선언

// Hello.java
public class Hello {}

public class Hello2 {}
// 오류1. 파일명과 public class의 이름이 다릅니다.
// 오류2. public class이름을 Hello2 -> Hello로 바꿀 경우 : 이미 선언된 타입입니다.

public class이름은 유니크하게 존재해야 함을 알 수 있습니다.

예제 3 - 파일명과 소스파일 이름이 일치하지 않는 경우

// Hello.java
public class Hello2 {}
class Hello3 {}
// 오류 public class의 이름은 파일명과 일치해야 합니다.

파일명과 소스파일 이름이 일치하지 않아서 실행할 수 없습니다.

예제 4 - public class가 없는 경우

// Hello.java
class Hello {}
class Hello2 {}
// 오류 없음

public class가 없다면 오류가 발생하지 않습니다.
public class가 아닌 일반 class로 선언된 클래스에서도 소스파일의 이름과 클래스 이름이 일치한다면,
public static void main이 있다면 실행은 가능합니다.
하지만 소스파일의 이름과 클래스 이름이 다르다면 main 메서드가 실행되지 않습니다.

소스파일의 이름과 클래스 이름이 다르다면 실행이 불가능 하나요?

Run as -> Main -> Main class를 지정해주는 부분에서 수동으로 main 메서드가 존재하는 클래스명을 바꿔주면 실행이 가능합니다.

0개의 댓글