[Java의 정석]Chapter7.객체지향 프로그래밍2(12~14)

Hello_Wendy·2022년 4월 27일
0

자바의 정석

목록 보기
52/61
post-thumbnail

Chapter 7. 객체지향 프로그래밍2

12. 패키지(package)

  • 패키지 : 클래스의 묶음

  • 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리 가능

  • 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 자신만의 패키지 체계를 유지함으로써 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있음

  • 클래스의 실제 이름(full name)은 패키지명을 포함한 것

    	ex) String클래스의 실제이름 : java.lang.String (Java.lang 패키지에 속한 String 클래스)
  • 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리임 → 그래서 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스파일(클래스이름.class)이어야 함

  • 디렉토리가 하위 디렉토리를 가질 수 있는 것처럼, 패키지도 다른 패키지 포함 가능하며, 점 . 으로 구분

    	ex) java.lang패키지에서 lang패키지는 java패키지의 하위 패키지

13. 패키지의 선언

  • 패키지 선언 방법 : package 패키지명;
  • 패키지 선언문은 반드시 소스파일에서 주석과 공백을 제외한 첫 번째 문장이어야 함
  • 하나의 소스파일에 단 한 번만 선언 가능
  • 해당 소스파일에 포함된 모든 클래스나 인터페이스는 선언된 패키지에 속하게 됨
  • 패키지명은 대소문자를 모두 허용하지만, 클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙
  • 소스파일을 작성 할 때 패키지를 선언하지 않고도 문제 없는 이유는 자바에서 기본적으로 제공하는 이름 없는 패키지(unnamed package) 때문
  • 패키지 지정하지 않은 클래스는 자동적으로 '이름 없는 패키지'에 속하게 됨
  • 결국 패키지를 지정하지 않은 모든 클래스들은 같은 패키지에 속하게 됨

14. 클래스 패스(classpath)

  • PackageTest클래스가 com.codechobo.book패키지에 포함되어 있다면 클래스 파일인 PackageTest.class는 com폴더 안의 codechobo폴더 안의 book폴더 안에 있어야 함

    jdk1.8 > work > com > codechobo > book

  • 패키지의 루트 디렉토리를 클래스패스(classpath)에 포함시켜야 함 → com.codechobo.book패키지의 루트 디렉토리는 디렉토리 'com'의 상위 디렉토리인 'C:\jdk1.8\work' 디렉토리를 클래스패스에 포함시켜야만 실행 시 JVM이 PackageTest클래스를 찾을 수 있음
  • 윈도우즈에서는 '제어판 - 시스템 - 고급 시스템 설정 - 환경변수 - 새로 만들기'에서 변수이름에 'CLASSPATH'를 입력하고 변수값에 '.;c:\jdk1.8\work'를 입력

  • ;를 구분자로 하여 여러 개의 경로를 클래스패스에 지정할 수 있으며, 맨 앞에 .;를 추가한 이유는 현재 디렉토리(.)를 클래스패스에 포함시키기 위해서임
  • 클래스패스를 지정해 주지 않으면 기본적으로 현재 디렉토리(.)가 클래스패스로 지정되지만, 이처럼 클래스패스를 따로 지정해주는 경우에는 더 이상 현재 디렉토리가 자동적으로 클래스패스로 지정되지 않기 때문에 별도 추가해주어야 함
  • jar파일을 클래스패스에 추가하기 위해서는 경로와 파일명을 적어주어야 함
    	ex) 'C:\jdk1.8\work\util.jar'파일을 클래스패스에 포함시키려면 아래와 같음	
    	 	▶ C:\WINDOWS>SET CLASSPATH=C:\jdk1.8\work;C:\jdk1.8\work\util.jar;
profile
안녕 나의 새로운 세상

0개의 댓글