• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

질문입니다.

22.08.27 20:09 작성 조회수 174

0

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

답변 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("추상 클래스에서 구현도 했다!!") 
  }
}

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

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

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