- 제어자 : 접근 제어자와 기타 제어자로 구분할 수 있다.
- 접근 제어자 : 클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하여 정보 은닉을 구체화할 수 있다.
- private : 정보를 은닉하는 용도로 외부에 공개되지 않으며, 외부에서는 직접 접근할 수 없다.
- 즉, 정보를 보여주고 싶지 않을 때 private을 사용하면 된다.
- public
- 외부에 공개되며, 해당 객체를 사용하는 프로그램 어디에서나 직접 접근할 수 있다.
- public 메소드를 통해서만 해당 객체의 private 멤버에 접근할 수 있다.
- 즉, public 메소드는 private 멤버와 프로그램 사이의 인터페이스 역할을 수행한다고 할 수 있다.
- protected
- 부모 클래스에 대해서는 public 멤버처럼 취급
- 외부에서는 private 멤버처럼 취급
- default
- 따로 존재하지 않으며, 지정되지 않으면 자동적으로 가진다.
- 같은 패키지에 속하는 멤버에서만 접근할 수 있다.
- 기타 제어자
- final : 클래스, 메소드, 필드, 지역 변수에 사용할 수 있다.
- 변경할 수 없다는 의미를 가지며 필드나 지역 변수에 사용하면 상수가 된다.
- 클래스에 사용하면 다른 클래스가 상속받을 수 없게 된다.
- 메소드에 사용하면 오버라이딩을 통한 재정의를 할 수 없게 된다.
- static : 메소드, 필드, 초기화 블록에 사용한다.
- 프로그램 시작 시 최초에 단 한 번만 생성되고 초기화된다.
- 인스턴스를 만들 수 없고, 생성자도 갖지 않는다.
- 싱글톤 패턴과 static class의 차이를 알면 좋다.
- abstract : 클래스, 메소드에 사용할 수 있다.
- 선언부만 있고 구현부가 없는 메소드를 추상 메소드라 하며, 반드시 abstract 제어자를 붙여야 한다.
최근댓글