본문 바로가기
코드프레소 체험단/Java 프로그래밍

[Java 프로그래밍 초급] 객체지향 고급 (3)

by 의정부핵꿀밤 2022. 1. 25.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - Java 프로그래밍 초급 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr


패키지(package)

  • 관련 있는 클래스를 한군데 묶어 놓은 그룹

  • 클래스를 구분하는 일종의 디렉토리
  • 패키지는 하위 계층 구조를 가질 수 있다

 

 

 

패키지명의 작성

  • 패키지명은 소문자로만 작성하며, 클래스들의 묶음을 표현하는 의미있는 이름으로 작성한다
  • 패키지는 계층 구조를 갖는다
  • 일반적으로 '1차도메임.회사명.'으로 시작된다
    • 이는 꼭 지켜야 할 규칙은 아니고 대부분 이런 식으로 프로젝트 명을 짓는다 (권장 사항)
    • com.회사명.프로젝트명.모듈명.서브모듈명
    • org.회사명(-조직명).프로젝트명.모듈명.서브모듈명
    • ex) com.coderpesso.newtube.user
  • 패키지의 이름과 구조는 실제 OS의 디렉토리 구조와 매핑된다
    • 패키지를 생성하면 실제 디렉토리도 새로 생성된다
  • 패키지명계층 구조의 전체 이름을 모두 포함한다
  • 하위 계층 구조는 점(.)을 통해 구분이 가능하다

패키지명 - 계층 구조의  전체 이름을 포함

 

 

 

FQCN(Fully Qualified Class Name)

  • 클래스의 FQCN 패키지 명을 모두 포함한다
  • 패키지명 + 클래스명

클래스의 FQCN

 

 

패키지와 클래스

  • 모든 클래스는 반드시 하나 이상의 패키지에 속한다
  • 클래스 생성 시 패키지를 선언하지 않으면, 이름 없는 패키지 (unnamed package)에 포함된다
  • 패키지를 선언하지 않은 모든 클래스는 모두 동일한 패키지에 속한다 -> unnamed package

 

 

패키지의 선언

  • 해당 클래스가 어떤 패키지에 속하여 있다고 명시하는 것이다
  • package 키워드를 통해 패키지명을 선언할 수 있다
  • 패키지 선언문은 .java 파일의 가장 첫 번째 라인에 작성한다
  • 모든 클래스에 단 한번만 패키지를 선언할 수 있다
  • IDE를 통해 패키지를 선언할 수 있다 - 자바 클래스를 생성하면 자동으로 선언이 된다!

 

 

다른 패키지의 클래스 사용하기 - import

  • 다른 패키지에 속한 클래스를 사용할 때에는 클래스의 FQCN을 사용해야 한다
  • FQCN의 반복을 피하려면 import 문을 선언한다
  • 사용하고자 하는 클래스의 FQCN을 명시한다

클래스의 FQCN을 import 하여 사용

  • 특정 패키지 내의 모든 클래스를 사용하는 경우가 있다
  • 이럴 때에는 FQCN 대신 '패키지명.*'으로 특정 패키지 내의 모든 클래스를 사용할 수 있다

특정 패키지 내의 모든 클래스를 사용하는 경우

 

 

 

default 접근 제어자

  • 접근 제어자를 명시하지 않으면 default 접근 제어자가 적용된다
  • 같은 패키지 내에서는 접근이 가능하지만, 다른 패키지에서는 접근 불가능하다
  • default 접근 제어자는 상속 관계라도 다른 패키지인 경우 접근이 불가능하다

 

 

 

protected 접근 제어자

  • 같은 패키지 간에는 멤버 접근이 가능하다
  • protected 접근 제어자는 모든 자식 클래스에서의 접근을 가능하게 한다
  • 상속 관계에서 부모 클래스의 패키지가 달라도 자식 클래스에서 부모 클래스의 멤버에 접근이 가능하다

 

 

💡 Point!

  • 패키지관련 있는 클래스를 한 데 묶어 놓은 그룹이다
  • 파일 시스템의 디렉토리와 유사하며 실제로 디렉토리에 매핑된다
  • 패키지 단위로 접근 제어가 가능하다 -> default, protected
  • 다른 패키지의 클래스를 활용할 때 FQCN을 사용해야 하며, import로 사용할 클래스를 명시할 수 있다!
728x90

댓글