본문 바로가기
CSE/CP1 이론

CP1_07.객체지향 프로그래밍_Advanced_4. Modifier(제어자)

by 0/0 2024. 5. 29.
1. Basics 클래스, 객체, 변수, 메서드 // 생성자, 초기화
2. Advanced 상속, 오버라이딩 // package, import, modifiers, 다형성 // 추상클래스, interface, 내부클래스
4. Modifier(제어자) 1. 제어자
2. static
3. final
4. abstract
5. 접근 제어자(public, private, protected...)
6. 제어자의 조합

 

*'제어자' 라고 부르는 경우는 드묾 **static 정도 중요하게 보면 될 듯

4.1 제어자(modifiers)

  • 제어자
    -클래스, 변수, 메서드의 선언부와 함께 사용되어 부가적인 의미를 부여함
  • 제어자의 종류
    -접근 제어자(access control modifier):
    public, protected, (default), private
    -그 외의 제어자
    static, final, abstract, (native, transient, synchronized, volatile ...)
    *하나의 대상에 여러 개의 제어자를 조합하여 사용하는 것 가능
     (public과 private 함께 사용 불가)

4.2 static *객체와 static 구분하자

-멤버변수, 메서드, 초기화 블록에서 사용 가능

  • 멤버변수에서의 사용
    -모든 인스턴스에 공통적으로 사용하는 클래스 변수가 됨
    -클래스 변수는 인스턴스를 생성하지 않고도 사용 가능
  • 메서드에서의 사용
    -인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 됨
    -static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없음
  • 초기화 블록에서의 사용
    -static 변수의 복잡한 초기화 작업을 수행함

4.3 final

-클래스, 메서드, 멤버변수, 지역변수에서 사용 가능

-의미: 변경 불가

  • 클래스에서의 사용
    변경될 수 없는 클래스, 확장될 수 없는 클래스가 됨
  • 메서드에서의 사용
    변경될 수 없는 메서드, 오버라이딩을 통해 재정의 될 수 없는 메소드가 됨
  • 멤버볌수, 지역변수에서의 사용
    값을 변경할 수 없는 상수가 됨

final

  • 생성자를 이용한 final 멤버변수 초기화
    -final이 붙은 변수는 상수이므로 보통 선언과 동시에 초기화 수행
    -인스턴스 변수의 경우 생성자에서 단 한번만 초기화 가능
     *각 인스턴스마다 final이 붙은 멤버변수가 다른 값을 가질 수 있음

생성자를 이용한 final 멤버변수 초기화

4.4 abstract
-클래스, 메서드에서 사용 가능

  • 클래스에서의 사용
    클래스 내에 적어도 하나 이상의 abstract 메서드가 선언되어 있음을 의미함
  • 메서드에서의 사용
    abstract 메서드는 선언부만 존재, 구현부는 존재치 않음 => '추상 메서드'에서 자세히 배움

4.5 접근 제어자(access modifier)

-접근 허용 범위를 나타냄

-클래스 또는 멤버에 사용되어 외부에서 접근하지 못하도록 제한하는 역할

-접근 제어자가 사용될 수 있는 곳: 클래스, 멤버변수, 메서드, 생성자

  • 접근 제어자 종류
    public, protected, default. private
    *default 접근 제어자: 아무런 접근 제어자도 붙이지 않은 경우, package라고도 함

  • 대상에 따라 사용할 수 있는 접근 제어자

대상에 따라 사용할 수 있는 접근 제어자

  • 접근 제어자에 따른 접근 허용 범위

접근 제어자_접근 허용 범위