제어자 - static, final, abstract
by mignon25오늘 배운 것을 나에게 설명해주기.
제어자란?
클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여하는 것.
| 접근 제어자 | public, protected, (default), private 접근 제어자는 한 번에 하나만 사용 가능! |
| 그 외 | static, final, abstract, native, transient, synchronized, volatile, strictfp 나머지는 하나의 대상에 대해 여러 제어자 조합하여 사용 가능! |
static - 클래스의, 공통적인
- static 대상 : 멤버 변수, 메서드, 초기화 블럭
| 제어자 | 대상 | 의미 |
| static | 멤버변수 | - 모든 인스턴스에서 공통적으로 사용된다. - 인스턴스를 생성하지 않고도 사용 가능하다. - 클래스가 메모리에 로드될 때 생성된다. |
| 메서드 | - 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다. - static 메서드에 내에서는 인스턴스 멤버들을 직접 사용할 수 없다. |
final - 마지막의, 변경될 수 없는
- final 대상 : 클래스, 메서드 , 멤버변수, 지역변수
| 제어자 | 대상 | 의미 |
| final | 클래스 | - 변경될 수 없는 클래스, 확장될 수 없는 클래스. - final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다. |
| 메서드 | - 변경될 수 없는 메서드. - final로 지정된 메서드는 오버라이딩 불가(재정의 불가) |
|
| 멤버 변수 | - 변수 앞에 final이 붙으면 값을 변경할 수 없는 상수가 된다. - 인스턴스 변수의 경우 생성자를 통해 초기화 가능 -> 인스턴스 별로 다른 상수값을 갖게 할 수 있다. -> 이것이 불가능하다면 클래스에 선언된 final이 붙은 인스턴스변수는 모든 인스턴스에서 같은 값일 것이다. |
|
| 지역 변수 | - 변수 앞에 final이 붙으면 값을 변경할 수 없는 상수가 된다. |
생성자를 이용한 final 멤버 변수의 초기화
class Card {
final String KIND; // 상수지만 선언과 함께 초기화 하지 않고,
final int NUMBER; // 생성자에서 단 1번만 초기화할 수 있다.
static int width = 100;
static int height = 250;
Card(String kind, int num) {
KIND = kind;
NUMBER = num;
}
public String toString() {
return KIND + " " + NUMBER;
}
}
abstract - 추상의, 미완성의
- abstract 대상 : 클래스, 메서드
| 제어자 | 대상 | 의미 |
| abstract | 클래스 | 클래스 내에 추상 메서드가 선언되어 있음을 의미 |
| 메서드 | 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드 |
'Java' 카테고리의 다른 글
| 열거형 (Enum) (0) | 2023.03.06 |
|---|---|
| DI(Dependency Injection) 맛보기 (0) | 2023.03.03 |
| 추상화 - 추상클래스와 인터페이스 (0) | 2023.02.28 |
| 다형성(polymorphism) (0) | 2023.02.26 |
| [캡슐화] 접근 제어자(access modifier)와 getter, setter 메서드 (0) | 2023.02.25 |
블로그의 정보
Mignon'S Dev Log
mignon25