ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java 자바] 6. 클래스 ⑤ 패키지
    Programming/Java 2022. 7. 31. 15:38
    반응형

    6-12. 패키지

    폴더를 만들어 파일을 저장 관리하듯, 패키지를 만들어 클래스를 저장 관리

    - 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 함 (클래스명이 같더라도 패키지가 다르면 다른 클래스로 인식)
    - 클래스 이동시에는 패키지도 함께 이동해야 정상적으로 사용 가능

    6-12-1. 패키지 선언

    패키지는 클래스 컴파일 과정에서 자동적으로 생성되는 폴더

    package 상위패키지.하위패키지;
    
    public class ClassName {...}

    [ 패키지 Naming 규칙 ]

    • 숫자로 시작해서는 안 되고, _, $ 를 제외한 특수문자는 사용 불가
    • java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용 불가 (java.util)
    • 모두 소문자로 작성하는 것이 관례

    - 패키지간 중복 방지를 위해 회사의 도메인 이름으로 패키지를 만듦(도메인 기관에서 중복을 허용하지 않으므로)

    - 도메인 역순으로 패키지 이름을 지어줌(포괄적인 이름이 상위 패키지가 되도록 하기 위함)
    - 마지막에는 프로젝트 이름을 붙여주는 것이 관례

    com.samsung.projectname
    com.hyundai.projectname
    com.lg.projectname

    6-12-2. import 문

    같은 패키지 내의 클래스들끼리는 다른 클래스를 사용할 수 있지만,
    다른 패키지의 클래스를 사용하고 싶을 경우 아래 2가지 방법을 따름

     

    1) 패키지와 클래스를 모두 기술 

    - 패키지 이름이 길거나 사용해야할 클래스 수가 많다면 전체 코드가 난잡해질 수 있음

    // com.hankook 패키지에 소속된 Tire클래스를 이용해 필드를 선언하고 객체를 생성
    
    package com.mycompany;
    
    public class Car {
      com.hankook.Tire tire = new com.hankook.Tire();
      //[클래스타입명] [필드명] = [객체 생성]
    }

    2) import 문 사용

    - 패키지를 사용할 수 있게 패키지 자체를 import 할 수 있음

    package com.mycompany;
    
    import com.hankook.Tire;
    // import com.hankook.*; 를 사용하면 com.hankook에 있는 모든 클래스를 임포트할 수 있음
    
    public class Car{
      Tire tire = new Tire();
    }
    
    // 단, 지정된 패키지의 하위 패키지는 import 대상이 아님
    // 만약 하위 패키지에 있는 클래스도 사용하고 싶다면 import문을 하나 더 작성해야 함
    
    import com.mycompany.*;			// 하위에 있는 프로젝트 패키지는 import되지 않음
    import com.mycompany.project.*;		// 하위에 있는 프로젝트 패키지 import

    - 보다 간결하게 사용 가능하나, 서로 다른 패키지에 동일한 클래스 이름이 존재하고 두 패키지가 모두 import되었을 땐 컴파일 오류 발생

    package test;
    
    import test2.*;
    import test3.*;
    
    
    public class Test {
      public static void main(String[] args) {
        Tire tire = new Tire();		// 컴파일 오류 발생
      }
    }
    package test;
    
    import test2.*;
    import test3.*;
    
    
    public class Test {
    	public static void main(String[] args) {
    		test2.Tire tire = new test2.Tire();	// 명시해줘야 함
    	}
    }
    ❗️이클립스에서는 ctrl + shift + o 키를 누르면 필요한 패키지를 자동으로 import 해줌 
    반응형

    댓글

Designed by Tistory.