inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

9강. 코틀린에서 클래스를 다루는 방법

Custom Getter 에 대해 질문이 있습니다.

522

Joshua Kim

작성한 질문수 5

0

안녕하세요 태현님!

 

이 강의 덕분에 코틀린을 재미있게 학습하고 있습니다.

 

Custom Getter 에 대해 질문이 있어서 질문드립니다.

 

name 을 대문자로 만드는 것을 예시로 Custom Getter 를 사용하는 것과, 프로퍼티로써 사용하는 것에 대해 설명해주셨는데요, 제가 잘 이해하지 못했는지.. 두 방법에 대해 차이가 있는것 같습니다.

 

  1. Custom Getter 를 사용할 경우

fun main() {
    val personTest = PersonTest("abc", 10)
    println(personTest.name)
}
class PersonTest (
    name: String,
    var age: Int
) {
    init {
        if (age <= 0) {
            throw IllegalArgumentException("나이는 ${age}일 수 없습니다." )
        }
        println("초기화 블록")
    }

    val name = name
        get() = field.uppercase()
}

위의 경우 ABC가 출력이 됩니다.

생성자를 통해 name 값이 "abc"로 객체가 생성되었으나, custom getter 를 통해 uppercase 되어서 ABC 로 출력되는 것을 볼 수 있습니다.

 

  1. 프로퍼티를 사용하는 경우

fun main() {
    val personTest = PersonTest("abc", 10)
    println(personTest.name)
    println(personTest.uppercaseName)
}
class PersonTest (
    val name: String,
    var age: Int
) {
    init {
        if (age <= 0) {
            throw IllegalArgumentException("나이는 ${age}일 수 없습니다." )
        }
        println("초기화 블록")
    }

    val uppercaseName: String
        get() = this.name.uppercase()
}

위의 경우는 그대로 "abc" 가 출력이 됩니다.

당연히 personTest 객체를 통해 프로퍼티인 upppercaseName을 출력하면 ABC가 출력이 되지만요..

 

강의에서 태현님께서 backing field 를 사용하지 않고, 프로퍼티를 통해 사용한다고 하셨는데.. 둘의 작동이 다른 것 같아서요!

 

제가 짐작컨데, 말씀하신 내용이

  1. backing field 처럼 사용되는 경우가 많지 않다.

  2. 주로 getter 로 값을 가져오는 경우에는 값 자체를 가져오는 경우가 많으므로 프로퍼티를 통해 값을 가져오도록 한다.

라고 이해해도 되는 것일까요?

 

 

 

 

 

 

 

 

 

 

 

java kotlin 객체지향

답변 1

1

최태현

안녕하세요, Joshua Kim님!! 질문 주셔서 감사합니다~!!! 😊

 

강의에서 태현님께서 backing field 를 사용하지 않고, 프로퍼티를 통해 사용한다고 하셨는데.. 둘의 작동이 다른 것 같아서요!

라고 말씀해주셨는데요!!! 정확하십니다~~ 👍 둘의 작동이 같은 것은 아니고 "결과적으로" backing field를 사용해서 대문자 ABC를 가져올 수도 있고 property (upperCaseName)를 사용해서 대문자 ABC를 가져올 수도 있다는 의미였어요!

 

그리고 그 중 property를 더 많이 쓰는 이유가

  1. backing field 처럼 사용되는 경우가 많지 않다.

  2. 주로 getter 로 값을 가져오는 경우에는 값 자체를 가져오는 경우가 많으므로 프로퍼티를 통해 값을 가져오도록 한다.

말씀해주신 1번, 2번이 정확하게 맞습니다. 👍👍

 

완벽하게 이해하신 것 같습니다.

혹시라도 아직 해결되지 않으신 점이나 다른 궁금한 점 생기시면 언제든 편하게 질문 남겨주세요.

감사합니다!! 🙏

0

Joshua Kim

고맙습니다!

수업노트

0

56

1

싱글톤과 스프링

0

72

2

get() = 3

0

51

2

강사님

0

75

1

강의 복습하면서 생긴 질문

1

95

1

Kotlin과 Java의 현업에서의 활용

0

127

2

data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문

0

75

1

코틀린에서 상속 시, 주의점에 대한 질문

1

97

3

내용 이해 질문

0

57

1

자바와 코틀린의 함수형 프로그래밍,

1

91

1

플랫폼 타입 설명 문의

2

77

2

널 아님 단언 관련 질문

0

86

1

강의 중 질문

0

80

2

범위 비교 질문

1

92

2

타입캐스팅 궁금한점 질문드립니다.

1

239

2

코틀린 val 질문

0

167

2

완강 후 Kotlin 이런저런 질문 드려봅니다!

3

410

2

확장함수 스타일 질문

0

140

2

확장 프로퍼티 질문

1

158

1

update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!

1

283

1

java class의 NotNull 어노테이션 인식

1

264

1

[16강] 확장함수 관련 질문입니다!

1

134

2

리턴타입 사용시 any를 사용해도 괜찮은가요?

1

142

1

안녕하세요 scope function 에 receiver 가 없는 경우

1

172

1