-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
코틀린에서 프로퍼티 가시성 범위에 관련돼서 질문이 있습니다.
22.07.15 22:10 작성 조회수 162
0
8분 50초 쯤에 말씀하신 내용이 이해가 안가는데 확인 한 번만 부탁드립니다.
- 현재 이 Car은 사실 name, owner, price에 대한 세 개의 getter와
- owner와 price에 대한 setter가 있는거죠
위 내용에서 노란색 밑줄에 대한 내용이 이해가 안가는데 제가 잘못 알고 있었던거지 질문드립니다.
코틀린에서는 필드만 만들면 getter와 setter를 자동으로 만들어준다. 라고 9강에서 말씀하셨는데 이번꺼는 setter가 왜 owner와 price에 한정지어서 말씀하신건지 궁금합니다.
바이트 코드도 디컴파일 해봤을 때도 getter3개 setter3개가 존재해서 헷갈리게 돼서 정확히 알고 싶습니다!
답변을 작성해보세요.
1
최태현
지식공유자2022.07.16
안녕하세요! 지훈님~~!! 반갑습니다 ㅎㅎㅎㅎㅎ
아하~ 넵넵! 질문 주신 내용에서 이 부분이 핵심인 것 같아요!!
"코틀린에서는 필드만 만들면 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만 있을 겁니다!!
혹시 더 설명이 필요하신 부분이 있으면 편하게 알려주세요~~ 감사합니다 ㅎㅎㅎ
이지훈
질문자2022.07.16
아 정말 죄송합니다. 제가 해당 코드를 제대로 작성을 안했던거였군요.
바로 이해가 갔습니다 val 즉 상수로 선언돼 있기 때문에(생성자에서 초기화 후 변경 불가능) set 함수를 만들지도 않는거였군요.
늦은시간에도 답변 감사합니다!!
최태현
지식공유자2022.07.16
아이고 아닙니다 ㅎㅎㅎ 이번 강의는 자료가 없고 화면으로만 코드가 제공되어 실습하시는데 약간 어려움이 있으셨을 것 같아요!! 오히려 의문을 가지고 Decompile까지 직접 해보신게 대단하십니다!!
다음 강의부터는 자료도 잘 준비해보려고 합니다~ 🙏
감사합니다!! 언제든 또 질문 주셔요~!!!
답변 1