[Java] 객체지향 프로그래밍 - package와 import

2024. 4. 5. 12:27·Language/Java

 

 

패키지

패키지란 클래스의 묶음이다

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

같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능

자신만의 패키지 체계를 유지함으로써 다른 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다

 

클래스의 실제 이름에는 패키지명이 포함되어있다

ex) String 클래서의 실제 이름은 java.lang.String

- java.lang 패키지에 속한 클래스라는 의미

 

클래스가 물리적으로 하나의 클래스파일(.clas) 인 것과 같이 패키지는 물리적으로 하나의 디렉토리

즉 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스 파일(.class)이어야 한다

 

디렉토리처럼 패키지도 다른 패키지를 포함할 수 있으며 점(.)으로 구별한다

 

- 하나의 소스파일에는 첫 번째 문장으로 단 한번의 패키지 선언만을 허용
- 모든 클래스는 반드시 하나의 패키지에 속해야 함
- 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다
- 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리

 

패키지의 선언

package 패키지명;

패키지는 다음과 같이 한 줄만 적어서 선언하면 된다

 

소스파일에서 반드시 주석과 공백을 제외한 첫 번째 문장이어야 하며, 하나의 소스파일에 단 한번만 선언될 수 있다.

패키지명은 소문자로 하는 것이 원칙

 

패키지를 지정하지 않은 클래스는 자동적으로 '이름 없는 패키지'에 속하게 된다

따라서 패키지를 지정하지 않은 모든 클래스들은 같은 패키지에 속하는 셈

 

큰 프로젝트에서는 패키지를 구성하는게 좋다

 

import문

다른 패키지의 클래스를 사용하기 위해서는 패키지명이 포함된 클래스 이름을 사용해야 한다

import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 패키지명을 생략하고 클래스를 사용할 수 있다

import 패키지명.클래스명;
import 패키지명.*;

import문의 역할은 컴파일러에서 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것

package와 달리 import은 여러번 선언이 가능하며 클래스 선언문 이전에 위치해야 한다.

 

일반적인 소스파일(.java)의 구성은 다음과 같다

1. package문
2. import문
3. 클래스 선언

 

 

static import 문

static import문을 사용하면 static 멤버를 호출할 때 클래스 이름을 생략할 수 있다.

특정 클래스의 static 멤버를 자주 사용할 때 편리하고 코드도 간결해진다

 

import static java.lang.Integer.*;	//Integer 클래스의 모든 static 메서드
import static java.lang.Math.random;	//Math.random()만. 괄호 안붙임
import static java.lang.System.out;	//System.out을 out만으로 참조 가능

만약 위와 같이 static 문을 선언하였다면 System.out.println(Math.random());을

out.println(random());

이렇게 간결하게 사용할 수 있다

 

 

 

 

 

저작자표시 (새창열림)

'Language > Java' 카테고리의 다른 글

[Java] 객체지향 프로그래밍 - 다형성과 추상클래스  (0) 2024.04.08
[Java] 객체지향 프로그래밍 - 제어자  (0) 2024.04.05
[Java] 객체지향 프로그래밍 - 오버라이딩(overriding)  (0) 2024.04.05
[Java] 객체 지향 프로그래밍 - 상속  (0) 2024.04.03
[Java] JsonArry 형태의 문자열을 List<VO>객체로 변환하기  (0) 2023.10.12
'Language/Java' 카테고리의 다른 글
  • [Java] 객체지향 프로그래밍 - 다형성과 추상클래스
  • [Java] 객체지향 프로그래밍 - 제어자
  • [Java] 객체지향 프로그래밍 - 오버라이딩(overriding)
  • [Java] 객체 지향 프로그래밍 - 상속
soyeon26
soyeon26
  • soyeon26
    개발 일지
    soyeon26
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • Web (22)
        • Web (1)
        • HTTP (0)
      • Language (29)
        • Java Script (3)
        • Type Srcipt (1)
        • Java (25)
      • Front (19)
        • HTML+CSS (4)
        • React (15)
      • Back (41)
        • Spring(Springboot) (9)
        • JSP (21)
        • Database (5)
        • NestJS (6)
      • Devops (6)
        • Docker (1)
        • Git & SVN (5)
      • App (7)
        • Android (7)
      • IT 정보 (3)
  • 블로그 메뉴

    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    springboot
    Java
    강의후기
    중복제거
    Spring
    백엔드
    과학기술인번호 조회
    csr과ssr의 차이
    javascript
    자바스크립트set
    데이터베이스 강의
    프론트엔드
    Next.js
    sql강의
    강의 후기
    서블릿
    김영한
    React
    React Next.js
    SSR
    과학기술인 번호 발급
    java의 정석
    Next.js 필요성
    과학기술인 등록
    과학기술인등록번호 조회
    과학기술인 등록번호 발급
    인프런
    csrvsssr
    SQL강의 추천
    스프링부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
soyeon26
[Java] 객체지향 프로그래밍 - package와 import
상단으로

티스토리툴바