본문 바로가기
Java Tutorial

[Java 필수 지식] 접근제어자

by 미소5 2024. 6. 8.
제어자=     접근제어자(public, protected, private) +그 외 static, final, abstract 등등


  • 제어자는 클래스와 클래스의 멤버에 부가적인 의미 부여한다
  • 하나의 대상에 여러 제어자 같이 사용 가능,근데 접근제어자는 1개만!!

 


  • 접근제어자:  private ( 아무것도 안붙임 ) <  protected  public
제어자 같은 클래스 같은 패키지 자손클래스 전체
public O O O O
protected O O O  
(  X  ) O O    
private O      

 

  • public
    • 접근제한이 전혀 없음
  • protected
    • 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근 가능
  • ( X )
    • 같은 패키지 내에서만 접근 가능
  • private
    • 같은 클래스 내에서만 접근 가능

 

 


 

  • final
제어자 대상 의미
final

클래스 변경될수없는, 확장될수없는 클래스 (다른 클래스의 조상이 될수없다)
메소드 변경될수없는 메소드 ( 오바라이딩(재정의)될수없다 )
멤버변수, 지역변수 값을 변경할수없는 상수

 


  • abstract
제어자 대상 의미
abstract 클래스 추상메소드를 포함한 클래스, 미완성클래스
*추상클래스의 객체는 생성 불가능하다
메소드 추상메소드 중괄호{}가 없는 메소드 (선언부만 작성하고 구현부는 작성하지않은 메소드)

 


  • static
제어자 대상 의미
static 멤버변수 *클래스변수는 객체생성없이 사용 가능
*모든 인스턴스에 공통으로 사용되는 클래스변수
메소드 *객체생성없이 호출가능한 static메소드
  • static은 언제 붙여야 할까?
    • 멤버( 변수&메소드 ) 중에서 공통속성에 static을 붙인다. (인스턴스변수는 개별속성, 클래스변수는 공통속성)
    • 인스턴스멤버(인스턴스변수& 인스턴스메소드)를 사용하지않는 메소드에  static을 붙인다.

 

  • 인스턴스변수는 객체생성 후 사용가능하고, 클래스변수는 객체생성없이(자동생성) 아무때나 사용가능하다!
  • 인스턴스변수?

        클래스명 참조변수명=new 클래스명;           //객체생성

        참조변수명.인스턴스변수

 

  • 클래스변수?

        클래스명.클래스변수

 

 


 

728x90
반응형