Post

제어자

제어자

제어자는 클래스, 변수, 메소드의 선언부에 사용되고 종류에는 접근제어자(private, default, protected, public)와 그 외(static, abstract, final 등)가 있다. 한 대상당 접근제어자 1개, 그 외 제어자는 여러 개를 사용할 수있다.

static

클래스 내에 공통적인 것을 다룰 떄 사용한다.

멤버변수 메소드
 공통적인 특성 
 객체를 생성하지 않아도
사용O
 
 메모리 로딩시
생성
 
  인스턴스멤버
사용X


final

한 번 정해지면 바꿀 수 없다.

클래스메소드변수
확장X
–> 조상클래스 불가능
오버라이딩X값 변경X


abstract

미완성이기 때문에 객체를 생성할 수 없다.

클래스 메소드
abstract 메소드를 가진
클래스
 선언부만 있는 메소드


접근 제어자

접근 제어자를 사용하여 캡슐화한다.

  • 외부로부터 데이터를 보호한다.(비밀번호 등)
  • 외부가 굳이 알지 않아도 되는 데이터를 감춘다.( 나중에 유지보수시 테스트 범위를 줄여준다.)


접근제어자같은 패키지같은 클래스다른 클래스의
자손 클래스
전체
privateO   
defaultOO  
protectedOOO 
publicOOOO


제어자의 사용할 수 없는 조합

하나의 대상 당 접근제어자 1개와 접근제어자를 제외한 여러 개 제어자를 사용할 수있다. 그러나 제어자들의 특징에 의해 하나의 대상에 함께 사용할 수없는 제어자의 조합이 있다.

메소드 클래스
static + abstract final + abstract
private + abstract  
private + final  
  • static은 구현부가 있는 메소드에만 사용한다.
  • final은 확장할 수없는 클래스에 사용되고 abstract는 상속에 의하여 확장되는 클래스이기 떄문에 모순된다.
  • abstract는 자손에 의해 확장되어야 하는데 private는 자손클래스가 접근할 수 없다.
  • final, private 둘다 오버라이딩을 막는다. 하나만 사용해도 충분하다.
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.