☕ 자바 JAVA/☕ 클래스와 함수 Class & Method

[JAVA]한 파일에 여러 클래스 작성하기

yeun.log 2023. 8. 15. 20:43
반응형

출처 : https://youtu.be/hTHFeUTyIEo

위 영상을 보고 정리하였습니다.

 

 

 

 

 

 

 

앞서 말하자면

 

 

하나의 .class 소스파일 안에는
하나의 class만 작성하는 것이 바람직합니다

 

 

 

 

그럼에도 알고가는 이유는
하나의 .class 파일 안에 여러 클래스를 적을 수 있다는 사실이 신선하고
알아두면 좋은 기본개념이라는 겁니다.

 

 

 

 

 

 


 

 

 

 

 

클래스를 생성하면 이런 형태로 자동으로 만들어집니다.

안에 main()함수를 적고 하면 클래스가 실행되죠.

 

 

 

 

 

소스파일명과 동일한 class명을 실행하기 때문입니다

 

 

 

 

 

 

만약에 다른 이름으로 바꿔서 실행하면 해당 클래스를 읽을 수 없습니다.

 

 

 

main class를 변경하고 싶다면 Run Configuration에서 변경할 수 있습니다.

변경해주면 실행할 수 있겠지만. 비권장사항이겠죠.

 

 

 

 

 

 


 

 

 

 

 

다시 돌아가서 

기본적으로 .class 소스파일을 생성하면 접근제한자 public이 붙습니다.

 

 

 

 

 

 

소스파일명과 일치하는 class명만이
public 접근제한자를 가질 수 있습니다

 

 

 

 

 

파일명과 다른 class가 public 타입을 가질 경우

 

 

 

 

 


 

 

 

 

 

 

public class가 없거나
소스파일명과 같은 이름의 class만 public라면
하나의 소스파일에 여러 class가 올 수 있습니다

 

 

 

 

 


 

 

 

 

추가로 맨 처음 설명했던

왜 .class 소스파일 하나당 보통 하나의 클래스가 적는 지 설명해보자면

메모리와 상관이 있습니다.

https://yeun-devlog.tistory.com/entry/단순히-정리한-JVM구조와-Memory-static

 

단순히 정리한 JVM구조와 Memory(+ static)

*설명하기에 앞서 JVM은 이 페이지에서 설명하는 것보다 복잡한 구조를 가지고 있음을 안내드립니다. Class / Heap / Stack 으로 나누어 코드의 흐름이 JVM에서 구조를 따라 어떻게 흘러가는 지 간단히

yeun-devlog.tistory.com

  1. class는 Method Area에 저장되어 파일의 실행과 끝을 함께 합니다.
  2. 하지만 class 안의 non-static 함수를 사용하려면 인스턴스화해서 heap에 저장되게끔해야 사용할 수 있습니다.
  3. 인스턴스화 하려면 어차피 class 호출은 불가피 하니 굳이 하나의 .class 소스파일안에 적을 필요가 없죠.

만약 하나의 .class 소스파일에 여러 클래스를 적어서 사용한다면 이렇게 될 겁니다.

static method는 class와 함께 Method Area 메모리영역을 차지하기에 사용을 자제하는 편이라 보통 Study002 class처럼 non-static으로 사용할 때만 인스턴스화 해서 호출합니다.

 

 

 

 

 

 

반응형