본문 바로가기
Programming/Java

[JAVA] 수정자 ( modifier )

by 생각하는달팽이 2015. 3. 9.

PUBLIC

public 은 가장 일반적인 접근 제어자입니다. public 으로 선언된 멤버 변수, 메소드는 어떠한 자바 프로그램에서든지 제한 없이 사용이 가능합니다.


PRIVATE

 private 는 가장 폐쇄적인 접근 제어자입니다. private 으로 선언된 멤버변수, 메소드는 해당 클래스 내부의 메소드에서만 사용할 수 있습니다.즉, 다른 클래스에서는 접근 자체가 불가능합니다. ( 여기서 말하는 다른 클래스는 상속받은 서브클래스도 포함됩니다. ) 

 자바 프로그래머들이 멤버변수나 메소드 앞에 private 붙이는 주된 이유는 이후에 변경할 가능성이 있기 때문입니다. 왜냐하면, private 변수나 메소드는 추후 내용을 바꿔도 다른 클래스들에게는 아무런 영향이 없기 때문입니다. ( 접근을 못하니 아에 참조하고 있는 경우가 없겠죠...?!)


PROTECTED

protected는 상속을 위해 준비된 접근 제어자입니다. protected로 선언된 멤버 변수, 메소드는 해당 클래스를 상속받은 서브클래스에겐 public 처럼 작동되고, 그 외의 클래스에겐 private 로 작동합니다. 즉 , 서브클래스와 해당 클래스 내부의 메소드에서만 사용 가능합니다.


FRIENDLY

friendly 접근 제어는 따로 접근제어자를 선언하지 않은 경우에 기본값으로 선언되는 접근 제어자입니다. 특징으로는, firendly 의 경우 동일 패키지 내에서만 public 하게 작동한다는 점입니다. 만일, 잘 사용하던 클래스를 다른 패키지로 옮긴 후 작동되지 않는 경우가 있다면, 해당 클래스의 접근 제어자가 생략되어 friendly 접근 제어로 되어 있을 가능성이 큽니다.


STATIC

1. static 메소드는 오직 static 멤버 변수만 사용할 수 있습니다.

2. static 메소드는 오직 같은 클래스 내의 static 메소드만 호출할 수 있습니다.

3. static 메소드는 this를 사용할 수 없습니다.

4. static 메소드는 일반 메소드는 오버라이딩 될 수 없습니다.


Final

1. class 앞에 선언 될 경우

해당 클래스는 슈퍼클래스가 될 수 없습니다.


2. 메소드에 선언될 경우

메소드 오버라이드 할 수 없습니다. 다시 말해, 상속받은 클래스가 부모의 fianl 메소드를 재정의 할 수 없습니다.


3.변수 앞에 사용될 경우

해당 변수는 한 번 값이 저장되면 변경이 불가능합니다. 즉, 상수로 선언한다는 의미입니다.


반응형