자바의 정석 - 기초편

제어자, static, final, abstract

ODaram 2022. 8. 23. 15:34

▶ 제어자 (modifier)

  - 클래스와 클래스의 멤버 (멤버 변수, 메서드)에 부가적인 의미 부여

 제어자 종류
 접근 제어자 public, protected, (default), private
 그           외 static, final, abstract, native, transient, synchronized, volatile, strctfp

  - 하나의 대상에 여러 제어자를 같이 사용가능 (접근 제어자는 하나만)

public class ModifierTest {
     public static final int WIDTH = 200;
     public static void main(String[] args){
          System.out.println("Width =" + WIDTH);
     }
}

 

▶ static - 클래스의, 공통적인

제어자 대상 의미        
static 멤버변수 - 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다.
- 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다.
- 클래스가 메모리에 로드될 때 사용된다.
메서드 - 인스턴스를 사용하지 않고도 호출이 가능한 static 메서드가 된다.
- static메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다.
class staticTest {
   static int width = 200;                      // 클래스 변수(static변수)
   static int height = 120;                    // 클래스 변수(static변수)
   static {                                             // 클래스 초기화 블럭
             // static 변수의 복잡한 초기화  수행
     }
    staticf int max(int a, intb){
       return a > b ? a : b;
}

▶ final - 마지막의, 변경될 수 없는

제어자 대상 의미        
final 클래스 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다.
그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
메서드 변경될 수 없는 메서드. final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 있다.
멤버변수 변수 앞에 final이 붙으면, 값을 변경 할 수 없는 상수가 된다.
지역변수


 ▶ abstract - 추상의, 미완성의 + (추상화)

제어자 대상 의미
abstract 클래스 클래스 내에 추상 메서드가 선언되어 있음을 의미한다.
메서드 선언부는 작성하고 구현부는 작성하지 않은 추상 메서드임을 알린다.
abstract class AbstractTest {     // 추상 클래스 (추상 메서드를 포함한 클래스)
    abstract void move();            // 추상 메서드 (구현부가 없는 메서드) 
}

 

'자바의 정석 - 기초편' 카테고리의 다른 글

캡슐화  (0) 2022.08.31
접근 제어자  (0) 2022.08.24
import문 /static import문  (0) 2022.08.23
패키지, 클래스 패스  (0) 2022.08.23
참조변수 super, 생성자 super()  (0) 2022.08.22