작성
·
242
0
8분 50초 쯤에 말씀하신 내용이 이해가 안가는데 확인 한 번만 부탁드립니다.
위 내용에서 노란색 밑줄에 대한 내용이 이해가 안가는데 제가 잘못 알고 있었던거지 질문드립니다.
코틀린에서는 필드만 만들면 getter와 setter를 자동으로 만들어준다. 라고 9강에서 말씀하셨는데 이번꺼는 setter가 왜 owner와 price에 한정지어서 말씀하신건지 궁금합니다.
바이트 코드도 디컴파일 해봤을 때도 getter3개 setter3개가 존재해서 헷갈리게 돼서 정확히 알고 싶습니다!
답변 1
1
안녕하세요! 지훈님~~!! 반갑습니다 ㅎㅎㅎㅎㅎ
아하~ 넵넵! 질문 주신 내용에서 이 부분이 핵심인 것 같아요!!
"코틀린에서는 필드만 만들면 getter와 setter를 자동으로 만들어준다. 라고 9강에서 말씀하셨는데 이번꺼는 setter가 왜 owner와 price에 한정지어서 말씀하신건지 궁금합니다."
의문을 해결하시기 위해 Decompile 까지 해보시다니 너무 좋습니다!!!
그 이유를 말씀드리면, 제가 8분 50초 쯤에 다룬 Car 클래스에서 name은 val 이기 때문입니다!!!
owner와 price만이 var이죠! 때문에 name은 불변이라 setter 자체가 존재하지 않습니다~!
아마 Decompile 전 Kotlin 클래스를 보시면 Car 클래스에 name이 var로 되어 있으실거에요!! val 프로퍼티가 Decompile되면 getter만 있을 겁니다!!
혹시 더 설명이 필요하신 부분이 있으면 편하게 알려주세요~~ 감사합니다 ㅎㅎㅎ
아 정말 죄송합니다. 제가 해당 코드를 제대로 작성을 안했던거였군요.
바로 이해가 갔습니다 val 즉 상수로 선언돼 있기 때문에(생성자에서 초기화 후 변경 불가능) set 함수를 만들지도 않는거였군요.
늦은시간에도 답변 감사합니다!!