*JAVA*

[java] 캡슐화 - setter / getter 메소드

깐부로부터 2021. 10. 25. 23:31

캡슐화과정을 통해 완벽한 클래스의 형태를 갖추게 하자!

캡슐화를 하지 않으면 : 외부로부터 직접접근이 가능하기 때문에
함부로 값이 변질되거나 조회를 막지 못하는 문제가 발생

정보보안 3요소  : 기밀성, 무결성, 가용성

=> 캡슐화 작업 : 정보은닉 기술 중 하나!
데이터의 "접근제한"을 원칙으로 하여 외부로부터 직접 접근을 막자!!!!!
단, 대신에 간접적으로나마 처리(값 대입, 조회)를 할 수 있게끔 하자!!! => 메소드를 통해서

=> 캡슐화 작업의 2단계
1. 값을 숨긴다. : public 대신 private 으로 접근제한자를 바꿔준다.
2. 간접적으로 값을 처리할 수 있는 메소드를 만든다.

 

필드가 보이지 않아서 오류 발생 => private으로 설정했기 때문
위와 같은 직접접근이 불가능함!

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
    // 접근제한자 (예약어) 반환형 메소드이름(매개변수)
    public static void main(String[] args) {
 
//         객체 생성 == 인스턴스화
        Student lee = new Student();
                
         lee.setName("녹색어머니회 이선민");
         lee.setAge(23);
         lee.setGender('F');
         
         System.out.println(lee.getName());
         System.out.println(lee.getAge());
         System.out.println(lee.getGender());
}
cs

직접접근을 막았으니 간접적으로나마 접근할 수 있게끔 해주자!! => getter / setter 메소드 만들기!!


// 필드부

// 생성자부

// 메소드부

각 기능을 구현하는 부분 

접근제한자 반환형 메소드이름(매개변수) {

                    실행코드;

}

 

접근제한자 : 호출할 수 있는 범위를 제한해준다.
반환형 : 메소드의 결과값의 자료형을 지정해준다. void -> 돌려줄 값이 없다.
매개변수 : 메소드 호출 시 입력값으로 넣어주는 변수. 해당 메소드 실행중에만 사용가능한 변수. 생략가능


데이터를 기록 및 수정하는 기능의 메소드 : setter 메소드

규칙
1. setter 메소드는 접근 가능하도록 만들어야 하기 때문에 public 접근제한자를 이용
2. set 필드명으로 이름짓되 낙타봉 표기법(camelCase)을 지키도록 한다!
   ex) setName, setAge, setGender
3. 모든 필드에 대해서 전부 다 작성을 해줘야 한다 반드시!!!!!!!!!!!!!!!!!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 이름을 기록 및 수정할 수 있는 메소드
    public void setName(String name) {
        this.name = name; // "this" 
    }
        
    // 나이를 기록 및 수정할 수 있는 메소드    
    public void setAge(int age) {
        this.age = age;
    }
    
    // 성별을 기록 및 수정할 수 있는 메소드
    public void setGender(char gender) {
        this.gender = gender;
        
        // 특정 영역 안에서는 해당 영역안에 있는 지역변수 우선권이 있음!!!
        // this. 을 붙이지 않으면 매개변수 gender = 매개변수 gender 이렇게 인식이 됨!
    }
cs

 

데이터를 반환해주는 기능의 메소드 : getter 메소드

1. getter 메소드는 접근제한자를 public을 사용한다.
2. get필드명으로 짓되, 낙타봉 표기법(camelCase)를 사용한다.
   ex) getName, getAge
 3. 모든 필드에 대해서 다 작성해줘야한다!! 반드시!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 이름을 반환해주는 메소드
    public String getName() {
        return this.name;
    }    // return 결과값 => 결과값을 돌려주겠다!
        // 메소드의 반환형과 결과값 반환형이 동일한지 확인해야한다!
    
    public int getAge() {
        return this.age;        
    }
    
    public char getGender() {
        return this.gender;
    }
    
    // setter와 getter메소드 다 만들어줬으면 캡슐화 끝!
cs

 

'*JAVA*' 카테고리의 다른 글

[java] 접근제한자  (0) 2021.10.25
[java] 전역변수/ 지역변수  (0) 2021.10.25
[java] 객체(Object)  (0) 2021.10.24
[java] 배열복사(Array copy)  (0) 2021.10.24
[java] 배열(Array)  (0) 2021.10.22