본문 바로가기
TIL, WIL(일기)

23.07.19(2탄: 끝나지 않은 소통의 중요성)

by 도슬 2023. 7. 19.

깃허브 참조 : https://github.com/seongssu/Kotlin/pulls

내용은 아래

 

GitHub - seongssu/Kotlin

Contribute to seongssu/Kotlin development by creating an account on GitHub.

github.com

"1탄:소통의 중요성"에 이어서 모두 이해했고 끝난줄 알았지만

새벽2시가 넘어서 내가 질문했던 선생님들중 한분이 의문을 제기 하셨다.

 

fun main() {
    var magicianone = character("마법사", "red ", 180.0, 20, "여자")
    var magiciantwo = character("냉마법사", "blue", 170.8, 19, "남자")


}

class character(_name: String, _hairColor: String, _height: Double, _age: Int, _gender: String) {
    var name: String = "가나다"
    var hairColor: String = ""
    var height: Double = 0.0
    var age: Int = 0
    var gender: String = ""
    var money: Int = 0

    init {
        println("${name}")
    }

우선 위 코드를 출력하면 "가나다"가 두번 콘솔창에 프린트 된다.

 

1탄에서 이해한 부분은

init이 인스턴스를 초기화하는 생성자이므로 magicianone, magiciantwo의 키값, 

예를들어 character 클래스는 magicianone에서 "마법사"라는 이름이 담긴 _name이라는 그릇을 String형태로 받아와서

character클래스 변수 name에 담긴 "가나다"로 _name의 키값을 초기화 시켜줘서 

원래 magicianone에담긴 "마법사"를 "가나다"로 덮어씌워 초기화 시킨다는걸로 이해했었다.

 

이제와서 보면 말이 안되지만 어디까지나 내가 이해했었던 상황이다..

- 문제점

1. 애초에 character클래스에있는 name하고 magicianone에서 받아온 _name은 전혀 상관도없고 관련도 없는 놈이었다.

2. 말그대로 character내부에있는 변수 name에 담긴 "가나다"를 출력했다.main에있는 인스턴스 2개와는 전혀 관련도없다.

 

- 해결과정

1. init을 이용해서 magicianone의 _name그릇에담긴 "마법사"를 가져오고 싶었으면 println() 내부에 "${name}"이아니라 "${_name}을 썼어야했다. 그랬다면 위 코드에서 "마법사" 와 "냉마법사"가 출력 되었을 것이다.

2. 초기화 시킨다는말이 그릇에 담긴 내용물을 덮어씌워서 초기화 시킨다는말이아니라

베이스에 초기값을 넣는다는 말이었다.

말그대로 magicianone의 _name그릇에 담긴 "마법사"를 character클래스에서 받아와서 그걸 init함수에서 가장 먼저 실행 하는데 실행할때 베이스로 "마법사"를 쓴다는 말이었다.

 

결론

1. init은 클래스 내부에서 가장 먼저 실행되는 함수이다.

2. 키값은 인스턴스에서 받아오고, 받아올때 해당 클래스 옆에서 선언해줘야한다.

3. 인스턴스를 초기화 시킨다는말은 인스턴스가 실행될때 가장먼저 실행되는 init함수 내부의 초기값을 설정해준다는 말이었다.

 

느낀점

1.여기까지 init에 대해서 정리를 하고 이해했다. 혹 누군가 이글을 읽고 이해가안된다면 정말 미안하다. 내 말솜씨가 정말 형편 없어서 그렇다.

2. 그렇게 고생해서 이해한것이 잘못된줄도 모르고 넘어갔는데 소통했던 선생님의 의문덕분에 여기까지 올 수 있었다.

소통의 중요성을 다시 한번 느낄 수 있었다. 

 

PS.혹시나 이것도 잘못 이해한거면 꼭 말해주길 바란다. 개고생하고 얻는것도 없으면 너무 억울할거같다.

 

 

'TIL, WIL(일기)' 카테고리의 다른 글

23.07.21(WIL)  (0) 2023.07.21
23.07.20(3탄: git hub)  (0) 2023.07.20
23.07.18(1탄: 소통의 중요성)  (0) 2023.07.18
<Flutter>3조  (2) 2023.07.14
<Flutter> 미니프로젝트 시연영상  (0) 2023.07.13