웹개발/Java
14 - 4. Java - Object 생성자
lukeit
2024. 11. 4. 13:04
Object
객체 생성하는 방법 3가지
@NoArgsConstructor
+@Setter
먼저 빈 객체를 생성 한 뒤, 필요에 따라 원하는 필드 값을 주입하는 방식
public class Member { private String name; private String email; public Member() {} public void setName(String name) { this.name = name; } public void setEmail(String email) { this.email = email; } } // main Member aaron = new Member(); aaron.setName("Aaron"); aaron.setEmail("aaron@example.com");
@NoArgsConstructor
: Literally No Arguement Constructor gets created- in the above example, NoArgsConstructor is
public Member() {}
- in the above example, NoArgsConstructor is
Custom Constructor 만들기
필요한 필드 값만 주입받는 생성자
public class Member { private String name; private String email; public Member(String name) { this.name = name; } public void setEmail(String email) { this.email = email; } } //main Member aaron = new Member("Aaron"); aaron.setEmail("aaron@example.com");
b. DTO (데이터 전달용 객체)를 통한 생성자
public class Member { private String name; private String email; public Member(MemberRequestDto dto) { this.name = dto.getName(); this.email = dto.getEmail(); } } // main MemberRequestDto dto = new MemberRequestDto("Aaron", "aaron@example.com"); Member aaron = new Member(dto);
@AllArgsConstructor
모든 필드값을 다 주입해주는 생성자를 만들어준다
public class Member { private Integer id; private String name; private int age; private String email; // this would be created by calling @AllArgsConstructor public Member(Integer id, String name, int age, String email) { this.id = id; this.name = name; this.age = age; this.email = email; } }
생성자는 어떻게 만드는게 좋은가?
- 필드값을 어떤 시점에서 세팅할것인가의 기준으로 분리하는게 좋다
객체 종류
- DTO: 가변 객체 = 객채 내 데이터를
Getter
로 불러다가 쓸 수 있고, 객체 내 데이터를Setter
로 조작이 가능하다 - VO: 불변 객체 = 객체 내 데이터를
Getter
로 불러다가 쓸수만 있음 (조작 불가)
Final
- 메서드에
final
이 사용된다면 상속되지 않는다는 의미이다:@Override
를 사용할 수 없다- 해당 메서드가 꼭 한가지의 구현으로만 다양한곳에서 사용되는 경우
final
을 붙인다
- 해당 메서드가 꼭 한가지의 구현으로만 다양한곳에서 사용되는 경우
- 클래스에
final
이 사용된다면 상속되지 않는다는 의미이다:extends
를 사용할 수 없다- 극단적으론 모든 Class를 정의할때
final
을 붙여도 된다고 한다
- 극단적으론 모든 Class를 정의할때
final
을 통해 한번 initialize 된다면, 변경되지 않는다- 한번에 객체 생성 후 사용까지 가능하다
- 무조건 생성자를 통해 initialize해야한다
- 불변성 (Immutability)
- 한번 만든 객체는 변경할 수 없다
- 완전성 (Completeness)
- 초기화 후, 객체가 완전한 상태가 되도록 하는 것
반응형