본문 바로가기

프로그래밍/Java

Java_접근 제어 지시자와 캡슐화

접근 제어 지시자

: 클래스, 변수, 메서드의 선언부에 사용되어 클래스 외부에서 사용할 수 있는지 여부를 지정하는 키워드이다.

  • private : 같은 클래스 내부에서만 접근이 가능하다. (외부 클래스, 상속 관계의 클래스에서는 접근 불가)
  • (default) : 같은 패키지 내부에서만 접근이 가능하다. (상속 관계라도 패키지가 다르면 접근이 불가)
  • protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근할 수 없다.
  • public : 클래스의 외부 어디서나 접근할 수 있다.

 

제어자 같은 클래스 같은 패키지 자손클래스
(다른패키지도 가능)
전체
public O O O O
protected O O O  
(default) O O    
private O      

 

캡슐화

: 정보 은닉을 위한 캡슐화

  • 꼭 필요한 정보와 기능만 외부에 오픈
  • 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현하게 한다. (외부로부터 데이터를 보호하고 불필요하거나 내부적으로만 사용되는 부분을 감추기 위해서)
  • 각각의 메서드나 멤버변수를 접근함으로써 발생하는 오류를 최소화한다.

- get() / set() 메서드

- private으로 선언된 멤버 변수에 대해 접근, 수정할 수 있는 메서드를 public으로 제공한다.

: get() 메서드만 제공되는 경우 read-only 필드

 

- 이클립스에서 자동으로 생성해주는 단축 기능이 존재한다.

: (shift + alt + S) --> Generate Getters and Setters

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
public class Time {
    private int hour;
    private int minute;
    private int second;
    
    public int getHour() {
        return hour;
    }
    
    public void setHour(int hour) {
        if(hour < 0 || hour > 23return;
        this.minute = minute;
    }
    
    public int getMinute() {
        return minute;
    }
    
    public void setMinute(int minute) {
        if(minute < 0 || minute > 59return;
        this.minute = minute;
    }
    
    public int getSecond() {
        return second;
    }
    
    public void setSecond(int second) {
        if(second < 0 || second > 59return;
        this.second = second;
    }
cs

→ 접근 제어자를 private으로 하여 외부에서 직접 접근하지 못하도록 한다.
'get멤버변수이름'멤버변수의 값을 읽는 메서드이고, 'set멤버변수이름'멤버변수의 값을 변경(설정)하는 메서드이다.

'프로그래밍 > Java' 카테고리의 다른 글

Java_static변수와 메서드  (0) 2023.02.12
Java_this 사용법  (0) 2023.02.10
Java_참조자료형 변수  (0) 2023.02.09
Java_생성자  (0) 2023.02.07
Java_함수(function)  (0) 2023.02.06