final 과 불변객체 그리고 String( )

2024. 8. 12. 03:42■ JAVA REVIEW & PRACTICE/LECTURE1 - SPROUT

 

오늘 배워갈 것 

 

데이터 형을 활용한 불변 객체의 특징 학습하기

 

String 객체 학습하기

 

기본형 변수와 참조현 변수의 차이를 이해하고 설명하기

 

Final을 사용하여 불변을 활용할 수 있는지

 

불변 객체의 특징을 이해하고 설명할 수 있는지

 

불변의 특징을 활용해서 메모리 관리 및 효율성을 높이는 방법을 이해하고 설명할 수 있는지 

 

 

 

 

데이터 타입은 두가지로 나뉨

 


 

 

 

 

 

아래 순서대로 클래스 나눠서 코드 작성하기 

 

 

 

 

 

 

 

작성 순서 

 

 

 

 

 

 

 

 

 

배운 내용 (하지만 이해 잘 못함)

 

Artifact를 다룬 주머니가 Chamber에 있었으니 chamber에서 final을 넣어주면 Artifact에서도 data 값 앞에 final 을 만들어 불변객체로 만들어줘야함. 이때 data 키워드가 들어간 dungeon 클래스와 labyrinth 클래스에서 숨김 해주기

 

private final Artifact artifact = new Artifact(1);

private final Artifact artifact = 여기 주머니에 저장될 수 있는 값이 실제데이터가 아닌 메모리주소임

 

즉 불변객체를 만들어주려면 객체 안에 있는 아이를 final 로 만들어 줘야함 

 

불변객체를 fakeArtifact 로 만들어 주었는데 이것을 상족조차도 못하게 만들 수 있음
이 fakeArtifact가 지금 부모를 상속 받는데 상속을 못하게 하려면 Artifact 클래스 앞에 final 붙여주면 fakeArifact에서 사용을 못함

이 final 키워드를 사용해서 다른 클래스가 상속을 없게 만들어 고정해버리는것. 이건 절대 상속해서 쓰지 말라는 뜻 
(의도치 않은 확장을 방지하기 위한 목적) 

 

 

 

 

정리

 

1. 객체간의 관계는 생성자를 통해서 관계를 맺어줄 수 있음

 

2. final 키워드를 통해서 담기는 값이 실제 데이터인지 메모리 주소인지에 따라서 내가 담은 값이 변동이 될 수도 있고 안 될 수도 있음