불변객체

최주영·2024년 4월 30일
0

자바

목록 보기
27/28

✅ 불변 객체가 도입된 이유

  • 객체를 공유할 수 있는 것을 막기 위해서

💡 String 은 불변 객체임


✅ 불변 객체

  • 객체의 상태(내부의 값, 필드, 멤버변수)가 변하지 않는 객체

만드는 방법
1. final 키워드를 붙인다.
2. Setter 를 만들지 않는다.

  • 예제
// Address 클래스
public class Address{ 
	private final String value; // final을 통해 값 변경 불가능
    
    public Address(String value){
    	this.value = value;
    }
    
    public String getValue(){ // Setter를 생략해서 값 변경 불가능
    	return value;
    }
}
public class Member { // Member 클래스
     private String name;
     private Address address;
     public MemberV2(String name, Address address) {
         this.name = name;
         this.address = address;
     }
     public String getName() {
         return name;
     }
     public Address getAddress() {
         return address;
     }
     public void setAddress(Address address) {
         this.address = address;
     }
}  
// main문
 Address address = new Address("서울");
 Member memberA = new Member("회원A", address);
 Member memberB = new Member("회원B", address);
 //회원A, 회원B의 처음 주소는 모두 서울
 System.out.println("memberA = " + memberA); // 서울 
 System.out.println("memberB = " + memberB); // 서울
 
 //회원B의 주소를 부산으로 변경해야함
 //memberB.getAddress().setValue("부산"); //컴파일 오류 (final, setter때문에)
 memberB.setAddress(new ImmutableAddress("부산")); // new 키워드로 새로 만듬
 System.out.println("memberA = " + memberA); // 서울
 System.out.println("memberB = " + memberB); // 부산
 }
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글