패키지, 제어자

JUNG GYUWON·2023년 9월 26일
0

Java

목록 보기
4/18

패키지

클래스와 인터페이스의 집합

자바의 모든 클래스는 반드시 하나 이상의 패키지에 포함되어야 한다

하지만 자바 컴파일러는 소스 파일에 어떠한 패키지의 선언도 포함되지 않으면, 기본적으로 이름 없는 패키지(unnamed package)에 포함해 컴파일한다

  • 패키지를 명시하지 않은 모든 클래스와 인터페이스는 모두 같은 패키지에 포함된다

import

import문을 활용하여 다른 패키지의 class를 사용할 수 있다

import java.awt.*;
import java.util.*;

import문을 선언할 때 *는 패키지의 모든 클래스를 import 하는 것이지 모든 하위 패키지의 클래스까지 포함해주는 것은 아니다

따라서 위 2개의 import 문을 아래의 1개의 import 문으로 표현할 순 없다

import java.*

제어자

클래스와 클래스 멤버의 선언 시 사용하여 부가적인 의미를 부여하는 키워드를 의미

  • 접근제어자
  • 기타제어자

접근 제어자

프로그램에서 사용자가 굳이 알 필요가 없는 정보는 사용자로부터 숨겨야 한다 (정보은닉)

정보 은닉을 위해서 접근제어자를 사용할 수 있다
1. private
2. public
3. default
4. protected


private

외부에 공개되지 않으며, 외부에서는 직접 접근할 수 없도록 하는 접근 제어자

따라서 자바 프로그램은 private 멤버에 직접 접근할 수 없으며, 해당 객체의 public 메소드를 통해서만 접근할 수 있습니다.


public

해당 객체를 사용하는 프로그램 어디에서나 직접 접근할 수 있도록 함

자바 프로그램은 public 메소드를 통해서만 해당 객체의 private 멤버에 접근할 수 있다

자바 클래스는 private 멤버로 정보를 은닉하고, public 멤버로 사용자나 프로그램과의 인터페이스를 구축합니다.

default

같은 클래스와 같은 패키지에 속하는 클래스에서만 접근할 수 있다

default 접근 제어자가 따로 존재하는 것은 아니고, 접근 제어자가 지정되지 않으면 자동적으로 default 접근 제어를 가지게 된다

protected

해당 클래스 내부와 자식 클래스, 같은 패키지 내에서 접근할 수 있도록 함


따라서 접근제어자의 허용 범위는 public > protected > default > private 순서이다


final 제어자

자바에서 final 제어자는 '변경할 수 없다'는 의미로 사용된다
final은 클래스, 메소드, 필드, 지역 변수에 사용할 수 있다

  • 필드나 지역 변수에 사용하면 값을 변경할 수 없는 상수(constant)가 된다
  • 클래스에 사용하면 해당 클래스는 다른 클래스가 상속받을 수 없게 된다
  • 메소드에 사용하면 해당 메소드는 오버라이딩(overriding)을 통한 재정의를 할 수 없게 된다

static 제어자

자바에서 static 제어자는 '공통적인'이라는 의미로 사용된다
static은 메소드, 필드, 초기화 블록에 사용할 수 있다

  • static 제어자를 변수에 사용하면 해당 변수를 클래스 변수로 만들어 준다
  • 메소드에 사용하면 해당 메소드를 클래스 메소드로 만들어 준다
  1. 프로그램 시작시 최초에 단 한 번만 생성되고 초기화된다
  2. 인스턴스를 생성하지 않고도 바로 사용할 수 있게 된다
  3. 해당 클래스의 모든 인스턴스가 공유한다

abstract 제어자

자바에서 abstract 제어자는 '추상적인'이라는 의미로 사용된다.
abstract는 클래스, 메소드에 사용할 수 있다

선언부만 있고 구현부가 없는 메소드를 추상 메소드라 하며, abstract 메소드가 있으면, 클래스도 반드시 abstract 제어자를 붙여야 한다

abstract 제어자를 가지는 클래스는 다른 클래스가 상속해서 오버라이딩해야만 사용할 수 있다

profile
반가워요😎

0개의 댓글