티스토리 뷰

Java/기본

031. Java 외부 구성 요소

따강아지 2022. 5. 16. 23:10

1. Package

package 패키지이름
  • 비슷한 목적으로 생성된  클래스 파일을 모아 둔 폴더
    -  물리적으로 하나의 디렉터리를 의미
  • 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디렉터리에 포함
  • 패키지는 다른 패키지를 포함할 수 있으며, 이때 디렉터리의 계층 구조는 점(.)으로 구분한다.
import 패키지이름.클래스이름;
import 패키지이름.*;
  • 자바 컴파일러에 코드에서 사용할 클래스의 패키지에 대한 정보를 미리 제공하는 역할
    -  import 문을 사용하면 다른 패키지에 속한 클래스를 패키지 이름을 제외한 클래스 이름만으로 사용
  • 선언 시 별표( * ) 의미는 하위 패키지의 모든 Package의 Class까지 포함해  주는 것이 아님 
    -  해당 폴더에 있는 Class에 대해서 만 이름만으로 사용 가능하다는 의미


2. 자바 제어자

  • 접근 지정자  :  접근 가능 범위 선언
    - public, private, default, protected
  • static :  클래스의 멤버(필드, 메서드, 이너 클래스)에 사용
    - 정적 멤버 ( Static Member )
    - 객체 생성 없이 “객체명.정적멤버명“으로 사용
  • final : 불변 값 표현
    -  필드, 지역변수, 메서드, 클래스 앞에 위치하며 각 의미가 틀림
  • abstract :
    - 기능을 정의하지 않는 추상한 것을 상속받은 곳에서 구현
    - 추상 메서드(abstract method ), 추상 클래스 ( abstract class )

2-1. 사용 가능한 제어자 

  • 클래스 : public, default, final, abstract
  • 메서드 : public, protected, default, private, final, abstract, static
  • 멤버 변수 : public, protected, default, private, final, static
  • 지역변수 : final

2-2. 사용 시 주의사항

  • 메서드에 static과 abstract를 함께 사용할 수 없다.
  • 클래스에 abstract와 final을 동시에 사용할 수 없다.
  • abstract메서드의 접근 제어자가 private일 수 없다.
  • 메서드에 private와 final을 같이 사용할 필요는 없다.

2-3. 접근 제어자 

멤버, 생성자, 메서드를 접근하기 위한 지정자로 선언한 지정자에  따라서 접근 범위가 결정된다.

접근 지정자 접근(사용) 가능 범위
public 동일 패키지의 모든 메서드 + 다른 패키지의 모든 클래스
protected 동일 패키지의 모든 메서드 + 다른 패키지의 자식 클래스
default ( or package ) 동일 패키지의 모든 메서드  ( 접근 지정자 생략 가능 )
private 동일 클래스

 


3. static Method

  • 정적 메서드 ( Static Member ) , 객체 생성 없이 “객체명.정적Method()“으로 사용
  • 인스턴스 변수는 사용 불가, 메서드 내부에서 객체를 생성하여 사용하는 경우는 객체의 인스턴스 변수 사용 가능 


3-1. static 초기화 블록

  • 객체 생성 이전에 static field는 초기화되지 않는다. ( 물론 선언과 동시에 초기화하는 경우 제외 )
  • static 블록을 사용하여 초기화한다. 
    -> 메모리에 Class가 로딩되는 시점에 가장 먼저 실행됨
  • Reference variable는 재 할당할 수 없지만 요소는 변경 가능하다.


4. final

  • Field, Local Variable, Method, Class 앞에 위치하며, 각각의 의미가 틀리다.
  • Field, Local Variable 사용 시 초기화를 하여야 한다.
위치 의미
Local Variable 값 변경 불가
Field 값 변경 불가
Method Override 불가
Class 상속 불가

4-1. Field, Local Variable 예제

지역 변수로 final을 사용하면 초기값 설정 후 재 할당할 수 없다.


4-2. final Method

메서드에 final을 사용하면 상속받은 후 재 정의할 수 없다.


4-3. final class

fianl class에서는 final method를 선언할 수 없다.


5. abstract

  • 사전적 의미 “추상적인”으로 추상 메서드(  Abstract Method )와 추상 클래스 (  Abstract Class )가 있다.

  •  추상 메서드(  Abstract Method ) :  Method선언 만 하고 기능이 없는 미완성 Method로 상속받은 객체에서 기능 구현하는 것으로 세미콜론( ; )을 끝나야 한다.

  • 추상 클래스 (  Abstract Class ) : 하나이상의 추상 메서드(  Abstract Method )가 포함되어 있는 Class로 new로 직접 생성할 수 없고 상속을 통해서 만 가능하다.

 

'Java > 기본' 카테고리의 다른 글

033. Java Generic  (0) 2022.05.25
032. Java Class 상속  (0) 2022.05.24
030. Class 구성 요소  (0) 2022.05.16
029. 클래스 ( Class )  (0) 2022.05.11
028. 객체 지향 프로그램 ( OOPL )  (0) 2022.05.09