inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

10강. 코틀린에서 상속을 다루는 방법

내용 이해 질문

해결된 질문

66

양성빈(Robert)

작성한 질문수 28

0

태현님 안녕하세요, 간만에 강의를 듣던 중 해당 개념에 대해 제가 잘 이해하고 있는지에 대해 여쭤보고자 질문을 드립니다.

제가 헷갈리는 부분은 open 에 대한 것과 상속에 대한 주의점인데요.

package me.sungbin.lec10

open class Base(
    open val number: Int = 100,
) {
    init {
        println("Base Class")
        println(number)
    }
}
package me.sungbin.lec10

class Derived(
    override val number: Int,
) : Base() {
    init {
        println("Derived Class")
    }
}
  1. open 키워드는 기본적으로 상속을 받을 클래스에 붙여주며, abstract 과 같이 반드시 구현해야 하는 클래스에는 따로 명시적으로 붙여주지 않는 것으로 이해가 되었습니다.

  2. 예시의 Base 클래스와 Derived 클래스에서 getMember() 호출 시, 초기 값이 나온 부분은 실제 Derived 클래스에서 생성자를 호출하고 그 생성자가 상위 클래스 생성자를 호출하고 그 생성자에서 number를 출력하려고 하는데 해당 number는 오버라이딩 되었으니, 하위 클래스의 number를 출력해야 하나, 해당 하위 클래스 생성자 호출 전이므로 초기 값 0이 나온다?라고 이해하면 좋을까요?

제가 이해한게 잘 맞는지 혹은 잘못되게 생각한 부분이 있는지 확인해주시면 감사드리겠습니다! 🙂

실무에서 이런 케이스를 겪어본 적이 없어서 헷갈리는 것 같아서 이번 기회에 제대로 알아가보려구요!

java kotlin 객체지향

답변 1

1

최태현

안녕하세요! 🙂 네 맞습니다! number를 가져오려고 하지만, 하위 클래스의 number는 아직 생성자가 호출되기 전이라 기본값 (이 경우는 Java로 decompile 해보시면 primitive int가 있기에 기본값이 0이 됩니다) 이 나오게 됩니다.

다음 질문에서도 한 번에 답변 드릴 수 있도록 하겠습니다. 🙇

수업노트

0

76

1

싱글톤과 스프링

0

84

2

get() = 3

0

62

2

강사님

0

84

1

강의 복습하면서 생긴 질문

1

107

1

Kotlin과 Java의 현업에서의 활용

0

142

2

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

0

80

1

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

1

112

3

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

1

96

1

플랫폼 타입 설명 문의

2

88

2

널 아님 단언 관련 질문

0

91

1

강의 중 질문

0

89

2

범위 비교 질문

1

101

2

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

1

248

2

코틀린 val 질문

0

174

2

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

3

418

2

확장함수 스타일 질문

0

146

2

확장 프로퍼티 질문

1

165

1

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

1

288

1

java class의 NotNull 어노테이션 인식

1

268

1

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

1

136

2

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

1

144

1

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

1

174

1

코틀린 싱글톤 질문

1

224

1