(java/자바) 매개변수와 this / Getter Setter 메소드

안녕하세요.
네이버 블로그를 운영하다가 벨로그는 처음 시작하는 벨린이 프론뚜입니다.💖

오늘은 자바의 this / Getter / Setter 에 대해서 알아보려고 합니다.

  1. 매개변수 이름이 너무 짧으면 코드의 가독성이 좋지 않기 때문에 가능하면 초기화시킬 필드 이름과 동일한 이름을 사용하는 것이 좋습니다.
  1. 이 경우 매개변수와 필드의 이름이 동일하기 때문에(메소드 또는 생성자) 내부에서 해당 필드에 접근할 수 없습니다. 왜냐하면 동일한 이름의 매개변수가 사용 우선순위가 높기 때문입니다. 이 경우 해결방법은 필드앞에 'this.'을 붙이면 됩니다.
  • 'this.필드'는 this라는 참조 변수로 필드를 사용하는 것과 동일합니다.

  • 일반적으로 객체지향 프로그래밍에서는 객체의 필드를 외부에서 직접적으로 접근하는 것을 막습니다. 외부에서 마음대로 변경할 경우 객체의 무결성이 깨질 수 있기 때문입니다. 예를들어 자동차의 속도는 음수가 될 수 없는데, 외부에서 음수로 변경하면 객체의 무결성이 깨지기 때문입니다.

  • 이러한 문제점을 해결하기 위해 메소드를 통해서 필드를 변경하는 방법을 선호합니다. 필드는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 필드에 접근하도록 유도합니다. 그 이유는 메소드는 매개값을 검증해서 유효한 값만 객체의 필드로 저장할 수 있기 때문입니다. 이러한 역할을 하는 메소드가 Setter()메소드입니다.

  • 외부에서 객체의 데이터를 읽을 때도 메소드를 사용하는 것이 좋습니다. 이런 경우에는 메소드로 필드값을 가공한 후 외부로 전달하면 됩니다. 이런 메소드가 바로 Getter() 메소드입니다.

  • 클래스를 선언할 때 가능하면 필드를 private으로 선언해서 외부로부터 보호하고, 필드에 대한 Setter / Getter 매소드를 작성해서 필드값을 안전하게 변경하고 사용하는 것이 좋습니다.

✨ 사용 방법 ✨

  • 클래스 안에서 우클릭 -> 아래로 내려서 Source 클릭 -> Generate Getters and Setters 클릭

myCar.color = "빨강";

myCar.color = "100";

// 필드를 바로 접근시 음수로 변하는 문제가 될 수 있습니다.

myCar.setColor("파랑");

myCar.setSpeed(120);

// 메소드로 필드를 접근한 방식은 괜찮습니다.

  • 이와같이 필드로 바로 접근시 생기는 오류를 막기 위해
    필드 앞에 private를 적어줍니다.

  • private는 필드로 바로접근이 불가능합니다.
    private은 외부접근 허용이 안되며, 데이터보호를 위해 사용됩니다.

  • private을 적는 순간 바로접근이 불가능해집니다.

  • 이제는 메소드를 통해서만 해당 필드에 접근이 가능해집니다

  • 메소드에서 나는 오류는 위에 설정을 이렇게 변경해주면 retrun으로 강제종료해줍니다.
    메소드에 -100을 적게 되더라도 0으로 나옵니다.

  • 방금 전엔 -100을 적게되었을 때 set을 이용하여 0으로 출력되게 해주었지만 get에 이런 내용을 적어주게 되면 0일 때 10으로 출력되게 됩니다.

이런 여러가지방법으로 Setter Getter 메소드를 사용하시면 됩니다.

좋은 웹페이지 즐겨찾기