[ITWILL : JAVA]클래스 : 매개변수위치에 따른 차이(생성자 vs 메서드), private멤버변수 getter와 setter로 가져다쓰기
ITWILL학원 : 13강 JAVA BY 윤미영강사
1. 매개변수위치에 따른 차이
클래스 Book은 책제목과, 저자, 가격을 출력해준다.
1 | public class Book { |
클래스 TestBook 이라는 새로운 클래스파일을 만들고 메인메서드를 실행해보자.
1 | public class TestBook { |
1-1 null값이 나오는 이유?
보이는 것처럼 생성자파라미터를 통해서 입력한 값들은 제대로 출력되지만 파라미터메서드를 통해서 입력한 값들은 null로 출력된다.
WHY?
메서드는 파라미터의 값을 받았는데 넣어줄 곳이 없기때문에!그렇다면 메서드를 어떻게 바꾸면 될까?
멤버변수를 파라미터값을 대입할수있게 코드를 추가해주면된다
1 | void showInfo(String title, String author, int price ){ |
1-2 어떤 방법이 좋은걸까?
생성자에 파라미터를 받는 방법과 메서드에 파라미터를 받아서 하는 방법 중 어느것이 더 좋은 것일까?
- 생성자파라미터
1 | //1-1.생성자파라미터 생성 |
- 파라미터메서드
1 | //2-1.파라미터메서드 생성 |
둘 다 기능은 동일하지만 생성자파라미터를 쓰는 것이 더 좋다
WHY?
생성자의 기능과 메서드의 기능에 맞게 충실하게 하는 것이 좋기때문이다
생성자의 기능은 변수를 초기화하는 것이다.
메서드는 이름에서도 알수있듯이 showInfo()이다. 하지만 파라미터메서드를 생성하면 변수도 초기화하고 출력까지하는 두가지 짬뽕기능을 가지게 된다.따라서 기능에 맞게 나눠서 코딩하는 것이 좋은 개발습관이다.
2. private 멤버변수값을 사용하는 방법
DAO : 주로 jsp model1에서 사용
DTO(Data Transfer Object) : 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 클래스이다.
- 즉, 객체에서 정보가 중요하다. 즉 멤버변수가 중요한 클래스.
- 정보전달이 중요한 DTO타입의 클래스들은 값을 생성해주는 getter, setter메서드를 만들어야한다
- 자바빈으로 불리기도 함.
- 주로 jsp model2에서 사용
- vs 기능이 중요한 클래스, 라이브러리가 중요한 변수
-
- DTO와 비슷한 개념
- 주로 스프링이용할때 사용
멤버변수는 private을 설정하는 것이 데이터보안상 좋다.
하지만 private을 쓰게되면 다른 클래스에서 가져가 쓸 수가 없다.
이럴때 아래 두가지 메서드를 이용한다(개발자들의 약속이다).
2-1. getter메서드와 setter메서드
- 멤버변수의 특정한 값을 가져오고 싶을땐 get멤버변수명().
- 멤버변수의 특정한 값을 설정하고싶을땐 set멤버변수명().
이를 getter와 setter라고 부른다.
- Getters and Setters 단축키 : Alt + Shift + S -> R
- 또는 source탭 Generate Getters and Setters 클릭
2-2. getter와 setter 사용하는 방법
- getter와 setter 사용하는 코드
1 | //메인메서드안에서 get메서드쓰는 방법 |
2-3. getter와 setter 예시
Book 클래스파일은 아래와 같다.
제목과 저자 가격을 멤버변수로 가지고 있다.
1 | public class Book { |
매개변수명과 멤버변수명이 같을때 this를 통해 멤버변수를 지정해줄수있다.
실행하는 메인메서드파일은 아래와 같다.
1 | Book book1 = new Book("운동하는여자", "양민영", 25000); |