동석쿠
프로그래밍 공부
동석쿠
전체 방문자
오늘
어제
  • 공부 (80)
    • 공부기록 (64)
      • 웹개발 (6)
      • Java (7)
      • cs 공부 (3)
      • http 웹 기본 지식 (8)
      • 자바 스프링 (20)
      • 개인 미니프로젝트 (3)
      • 알고리즘 공부 (6)
      • 면접준비 (2)
      • 프론트공부 (8)
      • 파이썬 플라스크 (1)
    • 항해99 기록 (14)
      • 회고록 (10)
      • 팀프로젝트 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Java
  • JPA
  • 리액트
  • lombok
  • Get
  • 자바스크립트
  • 항해99
  • 파이썬
  • API
  • 프로그래머스
  • 리프레시토큰
  • 리스트
  • 스프링부트
  • 스프링
  • 리프레쉬토큰
  • 자바
  • Post
  • 알고리즘
  • 상속
  • 문법

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
동석쿠

프로그래밍 공부

Java (Getter)(Setter)
공부기록/Java

Java (Getter)(Setter)

2022. 1. 21. 17:35

Private, Public

클래스의 모든 정보를 손쉽게 바꿀 수 있으면 안된다
왜냐하면 클래스는 고객의 비밀번호/결제정보와 같이 민감한 정보들도 담고 있기 때문.

그래서 자바의 클래스는, 밖에 드러내도 되는 것들을 public, 
함부로 바꾸면 안되는 것들을 private 으로 구분해서 나타낸다.

private 일 경우 발생하는 오류

public 이면? 아무런 오류도 발생하지 않는다

 

Getter / Setter

변수를 private으로 해놓으면 마음대로 변수를 변경할 수 없게된다.

이럴 때 필요한게 getter와 setter다

 

// Getter
public String getTitle() {
    return this.title;
}
// Getter
public String getTutor() {
    return this.tutor;
}
// Getter
public int getDays() {
    return this.days;
}

// Setter
public void setTitle(String title) {
    this.title = title;
}
// Setter
public void setTutor(String tutor) {
    this.tutor = tutor;
}
// Setter
public void setDays(int days) {
    this.days = days;
}
Course course = new Course();

System.out.println(course.getTitle());
System.out.println(course.getTutor());
System.out.println(course.getDays());

course.setTitle("웹개발의 봄 스프링");
course.setTutor("남병관");
course.setDays(35);

System.out.println(course.getTitle());
System.out.println(course.getTutor());
System.out.println(course.getDays());

getter는 가져오는 것 setter는 설정하는 것

 

이렇게 getter와 setter로 프로그래밍 하는 이유는 개체의 무결성을 보장하기 위함이다.

 

예를들어 Man이라는 클래스에 weight라는 필드가 존재할 때 weight는 0보다 작을 수 없다.

그러나 외부에서 직접적으로 접근할 경우, weight에 -100이라는 값을 줌으로써 객체의 무결성이 깨질 수 있다.

 

이를 방지하기위해 필드를 private으로 만들어 위부의 접근을 제한한 후,

setter를 사용해 전달받은 값을 내부에서 가공해 필드에 넣어주는 방식을 사용하고

마찬가지로 필드 값을 가져올 때도, getter를 사용해 본 필드의 값을 숨긴 채 내부에서 가공한 값을 꺼낼 수 있다.

 

내가 이해한대로 쉽게 설명하면

같이 협업을 할 때 객체사양 제대로 이해하지 못한사람이 냅다 키값을 변경해버린다던가.

원래 이런이런식으로 다른 필드에 영향받아 변경되도록 해놓은 필드에 멋대로 직접 값을 변경한다던가.

이러한 행위들을 아예 못하게 객체 수정권한 자체를 한정짓는 것. 객체를 설계한 의도대로 가져다 쓰라고

 

'공부기록 > Java' 카테고리의 다른 글

Java 해쉬함수  (0) 2022.01.15
Java (네트워킹)  (0) 2022.01.10
Java (제네릭스)(람다)(스트림)  (0) 2022.01.09
Java (예외,에러처리)(날짜와 시간 다루기)(컬렉션)  (0) 2022.01.08
Java 객체지향언어 (클래스,인스턴스,메소드,생성자,상속,접근제어자,추상클래스,인터페이스)  (0) 2022.01.06
    '공부기록/Java' 카테고리의 다른 글
    • Java 해쉬함수
    • Java (네트워킹)
    • Java (제네릭스)(람다)(스트림)
    • Java (예외,에러처리)(날짜와 시간 다루기)(컬렉션)
    동석쿠
    동석쿠

    티스토리툴바