inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

질문입니다.

301

잠꾸

작성한 질문수 22

0

안녕하세요.
 
영상 마지막에 open 키워드에 대해서 추상 멤버가 아니면 기본적으로 오버라이드가 불가능하다. open 키워드를 사용해주어야 한다. 라고 말씀해주셨는데요!
 
추상 멤버는 open 키워드 사용 없이 오버라이드가 가능하다는 말씀인 것 같은데요.
 
추상 멤버라고 한다면, 구체적으로 어디까지가 추상 멤버일까요?
 
예를 들어 인터페이스 Swimable의 val swimAblity는 추상 멤버이기 때문에 open 키워드를 사용하지 않았고, 인터페이스를 구현하는 Penguin 클래스에서 override 할 수 있게 된건가요?
 
그런데 추상 클래스 Animal에서는 legCount에 open을 붙여주었는데 추상 클래스의 프로퍼티니까 추상 멤버인 줄 알았는데 아닌건가요?
 
감사합니다.
 
 

kotlin oop java

답변 1

2

최태현

안녕하세요 연어포케님!!! 크으~~ 매우 매우 좋은 질문이십니다 ㅎㅎㅎㅎㅎ

'추상 멤버(함수/프로퍼티)'에 대한 정의는 interface와 abstract class에 따라 달라지게 됩니다!

  • interface : 구현체가 없는 경우에 추상 멤버

interface A {
  fun do1() // 추상 멤버 O

  fun do2() { // 추상 멤버 X
    println("인터페이스에 구현도 했다!!")
  }
}

  • abstract class : abstract이 붙어 있는 경우 추상 멤버

abstract class A {
  abstract fun do1() // 추상 멤버 O
  
  fun do2() { // 추상 멤버 X
    println("추상 클래스에서 구현도 했다!!") 
  }
}

함수에 대해서만 예시를 들었지만, 프로퍼티도 똑같다고 생각해주시면 됩니다 ㅎㅎㅎㅎㅎ

추가 설명이 필요하시면 편하게 질문 남겨주시고, 다른 내용에 대해서도 언제든 질문 남겨주세요~!!!!

감사합니다!!! 오늘도 좋은 하루 되세요~ 😊😊

0

김영욱

태현님 오래전 질문이지만 이 질문에 관해서도 한가지 추가로 궁금한점이 있습니다.

인터페이스에 default로 구현되어있는 멤버는 추상 멤버가 아니라고 말씀 해주셨는데요.
추상 멤버가 아님에도 불구하고 open 키워드 없이 override를 할 수 있는 이유는 뭘까요?(예를들어 영상 속 act 메소드)
인터페이스에 선언되있는 필드 및 메소드들은 상속을 해야만 사용가능한 항목들 이기 때문에 기본적으로 open을 사용중이라고 생각하면 될까요?

1

최태현

넵넵!

인터페이스에 선언되있는 필드 및 메소드들은 상속을 해야만 사용가능한 항목들 이기 때문에 기본적으로 open을 사용중이라고 생각하면 될까요?

라고 이해해 주셔도 될 것 같습니다. 👍 🙂

관련해서 Kotlin 개발진의 official한 의견을 들어본적은 없는 것 같네요~!! 감사합니다.

수업노트

0

55

1

싱글톤과 스프링

0

72

2

get() = 3

0

51

2

강사님

0

75

1

강의 복습하면서 생긴 질문

1

95

1

Kotlin과 Java의 현업에서의 활용

0

125

2

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

0

75

1

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

1

97

3

내용 이해 질문

0

57

1

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

1

91

1

플랫폼 타입 설명 문의

2

77

2

널 아님 단언 관련 질문

0

84

1

강의 중 질문

0

80

2

범위 비교 질문

1

92

2

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

1

239

2

코틀린 val 질문

0

167

2

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

3

408

2

확장함수 스타일 질문

0

140

2

확장 프로퍼티 질문

1

157

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