일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Tizen
- 야구
- 블로그
- NC 다이노스
- 프로야구
- ubuntu 12.04
- 리뷰
- ubuntu
- 단통법
- 김경문
- 조세피난처
- 우분투
- Git
- 애플
- 문파문파
- 데이터베이스
- arm
- 손민한
- 국정원
- 해외직구
- 뉴스타파
- 타이젠
- 태그를 입력해 주세요.
- mysql
- 인공지능
- NC다이노스
- 문파문파 공략
- Linux
- 안드로이드
- python
- Today
- Total
꿈꾸는 사람.
[Java][Visibility] 가시성의 개념. 본문
이번 글은 객체 지향 언어인 자바의 가시성(Visibility)에 대한 글이다.
가시성이란 클래스와 클래스 멤버인 멤버필드와 메소드의 사용범위를 결정하는 것이다.
즉, 한 클래스의 멤버필드와 메소드에 대한 다른 클래스의 접근 여부를 접근제어자로 제어하는 것이다.
접근 제어자
다른 클래스에서 특정 클래스, 멤버필드, 메소드의 접근을 허용할지 경정하는 것이다.
접근제어자의 종류 |
내용 |
public |
클래스와 패키지에 관계 없이어느 곳에서나 접근이 가능하다. 즉, 접근에 제한이 없는 접근제어자다. |
protected |
같은 패키지에서는 접근 제한이 없다. 다른 패키지의 경우 상속 관계인 경우만 접근이 가능하다. |
default |
접근제어자를 사용하지 않을 때의 기본 설정 값이다. 같은 패키지에서만 접근이 가능하다. |
private |
같은 클래스에서만 접근이 가능하다. |
예 1) 같은 클래스 A에 있는 메소드 A.
클래스 A의 메소드 A는 자신의 클래스에 있는 모든 접근 제어자(public, protected, default, private)의 멤버필드와 메소드에 접근할 수 있다.
예 2) 같은 패키지에 있는 클래스 A와 클래스 B
클래스 B에서 public, protected, default 접근제어자를 갖는 클래스 A의 멤버필드와 메소드에만 접근할 수 있다.
즉, private 접근제어자를 가지면 접근할 수 없다.
예 3) 패키지 A에 있는 클래스 A와 다른 패키지에 있는 클래스 B
패키지 A에 있는 클래스 A를 상속한 패키지 B에 있는 클래스 B의 경우다.
클래스 B는 public, protected 접근제어자를 갖는 클래스 A의 멤버필드와 메소드에만 접근할 수 있다.
반면에, 아무 관계가 없는 클래스 C는 public 접근제어자를 가지는 클래스 A의 멤버필드와 메소드에만 접근할 수 있다.
클래스를 정의할 때 권장되는 접근제어자
클래스는 객체를 어디서든지 생성할 수 있어야 하고, 메소드도 동일하다.
하지만 멤버필드는 중요 정보가 저장되므로 접근을 최소화하므로 getter()와 setter() 함수로만 액세스 하게 한다.
클래스 |
public 접근제어자 |
메소드 |
public 접근제어자 |
멤버필드 |
private 접근제어자 |
'IT > Language_Design Patterns' 카테고리의 다른 글
[Java] Swing. 개요. 컨테이너 예제. (0) | 2016.02.25 |
---|---|
[디자인 패턴][퍼사드 패턴] 클라이언트를 복잡한 시스템과 분리. (0) | 2016.01.27 |
[디자인 패턴][어댑터 패턴] (0) | 2016.01.19 |
[디자인 패턴][싱글턴 패턴] 안드로이드 6.0 싱글턴 패턴 예제. (0) | 2016.01.12 |
[디자인 패턴][팩토리 패턴 1] 팩토리 메소드 패턴 (0) | 2016.01.10 |