• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코틀린에서 프로퍼티 가시성 범위에 관련돼서 질문이 있습니다.

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

답변을 작성해보세요.

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만 있을 겁니다!!

 

혹시 더 설명이 필요하신 부분이 있으면 편하게 알려주세요~~ 감사합니다 ㅎㅎㅎ

 

이지훈님의 프로필

이지훈

질문자

2022.07.16

아 정말 죄송합니다. 제가 해당 코드를 제대로 작성을 안했던거였군요.

바로 이해가 갔습니다 val 즉 상수로 선언돼 있기 때문에(생성자에서 초기화 후 변경 불가능) set 함수를 만들지도 않는거였군요.

늦은시간에도 답변 감사합니다!!

아이고 아닙니다 ㅎㅎㅎ 이번 강의는 자료가 없고 화면으로만 코드가 제공되어 실습하시는데 약간 어려움이 있으셨을 것 같아요!! 오히려 의문을 가지고 Decompile까지 직접 해보신게 대단하십니다!!

다음 강의부터는 자료도 잘 준비해보려고 합니다~ 🙏

감사합니다!! 언제든 또 질문 주셔요~!!!

이지훈님의 프로필

이지훈

질문자

2022.07.16

넵 기초편 정말 잘 보고 있고, 심화편도 나오면 바로 보고 싶네요!