-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
질문입니다.
22.08.27 20:09 작성 조회수 27
0
안녕하세요.
영상 마지막에 open 키워드에 대해서 추상 멤버가 아니면 기본적으로 오버라이드가 불가능하다. open 키워드를 사용해주어야 한다. 라고 말씀해주셨는데요!
추상 멤버는 open 키워드 사용 없이 오버라이드가 가능하다는 말씀인 것 같은데요.
추상 멤버라고 한다면, 구체적으로 어디까지가 추상 멤버일까요?
예를 들어 인터페이스 Swimable의 val swimAblity는 추상 멤버이기 때문에 open 키워드를 사용하지 않았고, 인터페이스를 구현하는 Penguin 클래스에서 override 할 수 있게 된건가요?
그런데 추상 클래스 Animal에서는 legCount에 open을 붙여주었는데 추상 클래스의 프로퍼티니까 추상 멤버인 줄 알았는데 아닌건가요?
감사합니다.
답변을 작성해보세요.
1

최태현
22.08.28 10:50
안녕하세요 연어포케님!!! 크으~~ 매우 매우 좋은 질문이십니다 ㅎㅎㅎㅎㅎ
'추상 멤버(함수/프로퍼티)'에 대한 정의는 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("추상 클래스에서 구현도 했다!!")
}
}
함수에 대해서만 예시를 들었지만, 프로퍼티도 똑같다고 생각해주시면 됩니다 ㅎㅎㅎㅎㅎ
추가 설명이 필요하시면 편하게 질문 남겨주시고, 다른 내용에 대해서도 언제든 질문 남겨주세요~!!!!
감사합니다!!! 오늘도 좋은 하루 되세요~ 😊😊
답변 1