티스토리 뷰
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 |