inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin

Bài 10. Cách xử lý kế thừa trong Kotlin

내용 이해 질문

Đã giải quyết

56

roberts

28 câu hỏi đã được viết

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 객체지향

Câu trả lời 1

1

lannstark

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

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

수업노트

0

53

1

싱글톤과 스프링

0

71

2

get() = 3

0

49

2

강사님

0

74

1

강의 복습하면서 생긴 질문

1

94

1

Kotlin과 Java의 현업에서의 활용

0

124

2

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

0

74

1

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

1

95

3

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

1

91

1

플랫폼 타입 설명 문의

2

76

2

널 아님 단언 관련 질문

0

83

1

강의 중 질문

0

79

2

범위 비교 질문

1

91

2

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

1

239

2

코틀린 val 질문

0

166

2

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

3

408

2

확장함수 스타일 질문

0

139

2

확장 프로퍼티 질문

1

156

1

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

1

283

1

java class의 NotNull 어노테이션 인식

1

262

1

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

1

131

2

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

1

139

1

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

1

169

1

코틀린 싱글톤 질문

1

219

1