노션으로 다시 돌아갔습니다 😅

제어자 - 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 클래스 클래스 내에 추상 메서드가 선언되어 있음을 의미
메서드 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드

 

 

 

 

 

 

블로그의 정보

Mignon'S Dev Log

mignon25

활동하기